微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

iOS增加了TableViewCell中UIButton的触控面积

我的UITableViewCell中有一个UIButton

我做了一个UIButton的子类覆盖了pointInside函数

var touchMargin:CGFloat = 20.0

override func pointInside(point: CGPoint,withEvent event: UIEvent?) -> Bool {
    let extendedArea = CGRectInset(self.bounds,-touchMargin,-touchMargin)
    return CGRectContainsPoint(extendedArea,point)
}

但是,触摸区域不会增加.如果我触摸到UIButton外部,触摸表格单元格.

由于将按钮放置在单元格中,此代码是否无法正常工作?

如何解决

解决方法

您应该在要放大的视图上覆盖hitTest.

例如

- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event {
    if (!self.isUserInteractionEnabled || self.isHidden || self.alpha <= 0.01) {
        return nil;
    }
    CGRect touchRect = CGRectInset(self.bounds,-10,-10);
    if (CGRectContainsPoint(touchRect,point)) {
        //Todo!? check supviews
        return self;
    }
    return nil;
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐