美文网首页
iOS 事件传递那些事

iOS 事件传递那些事

作者: 糖三呵 | 来源:发表于2016-05-30 16:42 被阅读0次

iOS  中究竟消息是如何传递的,点击一个按钮到执行对应方法这个过程都经历了哪些?这些就要去看UIResponder 这个类。这是一个专门用来响应和处理事件的一个类,继承自NSObject 类,也是UIView、UIApplication (包括他们的子类)的父类。

iOS中事件分为三类:触控事件 传感器事件 远程控制事件。我们大部分时间用到的都是触控事件,就先来了解下触控事件。我们所见到的包括UIBtton UIImageView UIViewController 这些都是responder 对象。Gesture Recognizers是一个手势识别器对象,每一个Gesture Recognizers 都关联着一个view,附属在指定的view上面,并且为其设定指定的手势操作。当触控事件发生后,view会通过Gesture Recognizers去拦截该事件,如果这个事件是view 事先设定的监听事件。Gesture Recognizers就发送动作消息(action message)给目标对象(target)。并且在发生触控事件的时候,Gesture Recognizers要先于view(responder对象)本身接收到这个事件消息。换句话说当Gesture Recognizer接收到指定的事件时,它就会发送一条动作消息(action message)给target处理。

如下图,就是iOS 中事件传递的路径

先是app 接收到消息,传递给window,window会同时传递给Gesture Recognizers和view(responder对象)。但是如果Gesture Recognizers识别出传递过来的事件,就不会再传给view。事件传递到达Gesture Recognizers或是view以后。就会按照一个responder chain 的事件链向下传递到下一个responder,即next responder。

先讲讲这个responder chain,它是一系列连接的responder对象,通过responder 对象将事件处理传递给写一个responder 对象或者说更高级的对象,即next responder 对象。

*UIView的nextResponder属性,如果有管理此view的UIViewController对象,则为此UIViewController对象(利用这个可以通过nextResponder属性找到view关联的viewController);否则nextResponder即为其superview。

*UIViewController的nextResponder属性为其管理view的superview.

*UIWindow的nextResponder属性为UIApplication对象。

*UIApplication的nextResponder属性为nil。

所以说,触控事件发生后如果负责处理这个事件的responder 不处理该事件,则事件通过事件链被传递到下一个responder,直至传递到UIApplication,如果UIApplication也不处理则事件被丢弃。

最后说个小技巧,事件不响应的几个可能原因:

userInteractionEnabled = NO

hidden = YES

alpha = 0.0 ~ 0.01

欢迎指正。

相关文章

  • iOS 事件传递那些事

    iOS 中究竟消息是如何传递的,点击一个按钮到执行对应方法这个过程都经历了哪些?这些就要去看UIResponder...

  • iOS 响应链

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

  • iOS事件与响应

    参考文件:1.官方文档2.iOS触摸事件那点儿事3.iOS 点击事件传递及响应4.iOS事件处理,看我就够了 1....

  • 深入浅出iOS事件机制

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

  • iOS事件,原来如此

    精简地说:iOS事件分为传递和响应两个部分。 事件传递(建立传递链): iOS系统检测到手指触摸(Touch)操作...

  • 初识iOS事情处理机制

    参考:史上最详细的iOS之事件的传递和响应机制-原理篇iOS触摸事件全家桶史上最详细的iOS之事件的传递和响应机制...

  • iOS响应者链

    参考好文 iOS开发-事件传递响应链,用运行时分析 iOS事件传递:响应者链[译] http://www.jian...

  • 事件层级原理 响应链

    iOS事件 运动事件,远程控制事件、触摸事件 触摸事件 事件传递的顺序 当点击红色的时候 打印为 事件传递的方法 ...

  • iOS 触摸事件与响应理解

    参考文章: iOS触摸事件的流动 iOS触摸事件的传递与响应 UIViewController UIAppli...

  • iOS之事件的传递和响应机制

    iOS之事件的传递和响应机制

网友评论

      本文标题:iOS 事件传递那些事

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