hitTest和pointInside方法

hitTest: withEvent:方法

  • 事件傳遞的時候調用
  • 當事件傳遞給控件的時候,就會調用控件的這個方法,去尋找最合適的view
  • 作用:尋找最合適的view
- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event
{
    // 調用系統的做法去尋找最合適的view,返回最合適的view
    UIView *fitView = [super hitTest:point withEvent:event];
    return fitView;
}

pointInside:withEvent:方法

  • 作用:判斷當前這個點在不在方法調用者(控件)上
- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event
{
    return YES;
}

使用場景

  • 經常使用的:當兩個控件有重疊,需要將事件判斷是哪一個控件執行的時候
- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event
{
    // 當前坐標系上的點轉換到按鈕上的點
    CGPoint btnF = [self.btn convertPoint:point fromView:self];

    // 判斷點在不在按鈕上
    if ([self.btn pointInside:btnF withEvent:event]) {
        // 點在按鈕上
        return self.btn;
    }else{
        return [super hitTest:point withEvent:event];
    }
}
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容