iOS开发中的事件处理机制深度解析
1. 控制事件与目标 - 动作对
控制事件可以有多个目标 - 动作对。这可能是有意配置的结果,也可能是意外造成的。若在不删除现有目标 - 动作对的情况下,无意中为控制事件添加新的目标 - 动作对,就容易引发难以排查的问题。例如,在nib文件中建立了动作连接,又在代码里配置了调度表,那么点击按钮时, buttonPressed(_:) 方法可能会被调用两次。
动作选择器的签名有三种形式:
- 最完整的形式需要两个参数:
- 控件本身。
- 触发控制事件的 UIEvent 。
- 较常用的简短形式省略了第二个参数,如 buttonPressed(_:) ,它只接收一个参数,当通过按钮发出的动作消息调用该方法时,其参数是对按钮的引用。
- 更简短的形式则省略了两个参数。
UIEvent 是用于将触摸事件传达给应用程序的底层对象,它本质上是一个时间戳( Double 类型)以及一组触摸事件( UITouch )。动作机制会屏蔽触摸事件的复杂性,但如果需要处理这些复杂性,可以通过接收 UIEvent 来实现。不过,动作选择器的参数无法告知是哪个控制事件触发了当前调用。因此,要区分 Touch Up Inside 和 Touch Up Outside 控制事件,对应的目标 - 动作对必须指定不同的动作处理程序。
超级会员免费看
订阅专栏 解锁全文
1万+

被折叠的 条评论
为什么被折叠?



