开发者社区> 问答> 正文

UIView的事件传递的问题

我现在有一个UIView,我在上面添加了一个UILongPresessGestureRecognizer,同时,UIView上还有一个UIButton,我对这个UIButton添加了touchUpInside的事件处理。

一般情况下,我按button没啥问题,在整个UIView下长按也没啥问题。

但是如果我在这个UIButton上长按的话,会先触发LongPressGestureRecognizer啦,我的想法是,能够做到按按钮的时候只触发touchUpInside,而忽略UILongPressGresutreRecognizer吗?

对于iOS下的事件传递我始终不是很理解。

展开
收起
a123456678 2016-07-20 15:51:53 2255 0
2 条回答
写回答
取消 提交回答
  • 强!

    可以专门看看hittest和责任链的传递原理。

    2019-07-17 19:59:00
    赞同 展开评论 打赏
  • - (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event
    {
        UIView *touchedView = [super hitTest:point withEvent:event];
        if (!touchedView)
        {
            return nil;
        }
        gestureRecognizer.userInterActionEnabled = !(touchedView == button);
        return touchedView;
    }
    2019-07-17 19:58:59
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载