iOS 子视图超出父视图范围 无法响应点击事件的解决方办法
博客专区 > RainOrz 的博客 > 博客详情
iOS 子视图超出父视图范围 无法响应点击事件的解决方办法
RainOrz 发表于1年前
iOS 子视图超出父视图范围 无法响应点击事件的解决方办法
  • 发表于 1年前
  • 阅读 24
  • 收藏 0
  • 点赞 0
  • 评论 0

移动开发云端新模式探索实践 >>>   

如果在cell上添加了一个Tableview,但是tableview的范围超出了cell的frame。 此时你去点击超出部分的内容,发现不会进入点击cell的回调。原因是事件响应断了。当我们点击屏幕的时候,会产生一个点击事件,该事件从下往上一层层传递,当子视图超出父视图时,事件传递会返回nil,就是系统认为没有对象响应这个点击事件,因为你的点击范围不在父视图内。此时需要重写一个方法,返回响应这个事件的对象:如下

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

{

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

    

    if (view == nil) {

        for (UIView *subView in self.subviews) {

            CGPoint myPoint = [subView convertPoint:point fromView:self];

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

                

                return subView;

            }

        }

    }

    

    return view;

}

}

此方法写在父视图上

参考链接:http://blog.csdn.net/shuai_summer/article/details/52221223

http://www.360doc.com/content/15/0501/21/2735774_467330952.shtml

http://blog.csdn.net/jiajiayouba/article/details/23447145

  • 打赏
  • 点赞
  • 收藏
  • 分享
共有 人打赏支持
粉丝 7
博文 73
码字总数 69345
×
RainOrz
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: