美文网首页
超出父视图范围的按钮点击无响应

超出父视图范围的按钮点击无响应

作者: 吓死宝宝了啊 | 来源:发表于2017-07-19 18:05 被阅读20次

    touch事件的传递:

    在A视图上添加一个B视图,B视图上添加C视图,当我们touch C视图时,系统会从最底层的父视图开始检索,也就是先检索到A视图,然后遍历A视图的子视图,判断touch点在哪个子视图,发现在B视图,于是B视图也会遍历所有的子视图做同样的事情,事件传递到C视图,发现C视图没有子视图,于是由C视图处理touch事件

    view的touch事件都会调用- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event方法,去判断由哪个view去响应事件,所以只需按下面修改

    - (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event{

    UIView * view = [super hitTest:point withEvent:event];

    if (!view) {

    for (UIView * subView in self.subviews) {

    CGPoint p = [subView convertPoint:point fromView:self];//把point坐标转换到subView上

    if (CGRectContainsPoint(subView.bounds, p)) {

    view = subView;

    }

    }

    }

    return view;

    }

    此方法改变了事件检索的区域(包含了超出父视图范围的那一部分区域)

    相关链接:www.cnblogs.com/WZLpq-home/p/5616309.html 


    相关文章

      网友评论

          本文标题:超出父视图范围的按钮点击无响应

          本文链接:https://www.haomeiwen.com/subject/uxxrkxtx.html