1- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event
2- (BOOL)pointInside:(CGPoint)point withEvent:(nullable UIEvent *)event
兩個(gè)方法嵌套找到點(diǎn)擊的View.
Aview的子view是BView BView的子View是CView 依次類推有很多層view,怎么在AView里知道點(diǎn)擊的是最上面的View?
當(dāng)時(shí)我的回答是用runtime做個(gè)鉤子函數(shù),其實(shí)也能解決問題而且是非常perfect。
但是面試官愣住了,其實(shí)他想讓我用touch鏈來解決問題(當(dāng)然這次面試是失敗的,就這一個(gè)問題就pass了)。其實(shí)還可以深入一層所有的事件都在這里面。
- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event
{
UIView * viewMine = [super hitTest:point withEvent:event];
return viewMine;// 這就是點(diǎn)擊的View
}