美文网首页
iOS 事件响应和传递 总结

iOS 事件响应和传递 总结

作者: 三三哥 | 来源:发表于2017-06-16 10:40 被阅读0次

事件传递:

1.首先 UIApplication 获取事件存放到事件队列中,因为事件队列是先进先出,不能放到栈内(栈是一个整体连续的内存,先进去被压到栈底了)所以是先进后出。

2.UIApplication 把事件传给UIWindown ,UIWindown 通过

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

和 - (Bool)pointInside:(CGPoint)point withEvent:(UIEvent *)event;

通过遍历subViews寻找合适的子控件;

3.找到正确合适的子控件之后让子控件处理事件,还会继续往下传递:直到全部寻找完为止。

特别注意点:如果父视图不合适,自视图一定不合适(子视图的frame 超出父视图,此时点击子视图,父视图的传递链会被断掉,原因就是因为

- (Bool)pointInside:(CGPoint)point withEvent:(UIEvent *)event 判断返回为NO。

事件响应机制:恰恰与传递相反,从最上层的响应对象开始调用

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event  {

NSLog(@“做自己的事情”);

[super touchesBegan:touches withEvent:event];传给父类让父类继续做事情。

如果只要当前类响应,那么不调用父类方法,这样响应链也就断掉了。

}

处理完当前对象的事件之后可以调用 [super touchesBegan:touches withEvent:event]; 把事件响应传给下一个响应者(一般情况来说,父视图就是子视图的下一个响应者,如果是ViewController 那么 vc的view的响应者就是VC 比较特殊)。

参考他人链接总结一些自己的理解,如果错误请指正,大神勿喷!

原文链接 :http://www.jianshu.com/p/8dca02b4687e

相关文章

  • iOS 事件响应和传递 总结

    事件传递: 1.首先 UIApplication 获取事件存放到事件队列中,因为事件队列是先进先出,不能放到栈内(...

  • iOS 响应链

    iOS开发 - 事件传递响应链iOS 响应者链,事件的传递事件传递之响应链Cocoa Touch事件处理流程--响...

  • 事件穿透

    在事件响应和传递这篇文章中,讲了iOS中的事件响应和传递,今天在做项目的时候,正好碰到了一个应用的场景,因此记录下...

  • iOS事件响应和传递摘要

    原理篇实践篇补充手势篇需要自己整理一篇手势和普通触屏事件的整理

  • iOS 事件的响应和传递

    (Window -- View)由上而下传递 (View -- Window)由下而上响应 如何找到第一响应者 U...

  • iOS事件传递和响应

    iOS三大事件类型 响应事件的条件 系统确认处理响应的方法 涉及到的其他方法 打印传递链 结果 传递和响应和检测顺序

  • 事件响应和传递

    iOS设备会产生各种事件:触摸、晃动设备、远程控制等,事件发生了就需要有响应者去接收并处理事件,这就形成了一套事件...

  • 史上最详细的iOS之事件的传递和响应机制-实践篇

    前言 之前我已经通过《史上最详细的iOS之事件的传递和响应机制-原理篇》比较详细的介绍过了事件的响应和传递的一些原...

  • iOS 事件传递总结

    iOS有哪些事件: 1.运动事件 2.远程控制事件 3.触摸事件 ,我们平时开发遇到的最多的事件也就是触摸事件了...

  • 深入浅出iOS事件机制

    深入浅出iOS事件机制事件传递:响应链事件传递响应链

网友评论

      本文标题:iOS 事件响应和传递 总结

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