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];
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容