UIKit 为应用程序提供了编程手段来简化事件处理或者完全关闭事件流。下面的列表总结了这些方法:
§ 关闭触摸事件的递交。 缺省情况下,视图接收触摸事件,但 是你可以设置它的 userInteractionEnabled 属性为 NO 来关闭事件提交。视图在隐藏或透明 时也不会接收事件。
§ 在一段时间内关闭触摸事件的递交。 应用程序可以调用 UIApplication 方法 beginIgnoringInteractionEvents 并稍后 调用 endIgnoringInteractionEvents 方法。 第一个方法使应用程序完全停止接收触摸事件消息;第二个方法恢复接收消息。有些时候你想关掉事件接收比如正在执行动画。
§ 开启多点触摸的递交 。 缺省情况下,视图忽略多点触摸事件 序列中除了第一次触摸以外的其它所有事件。如果你想这个视图处理多点触摸,你必须为这个视图开启这个能力。通过编程设置你的视图的 multipleTouchEnabled 属性为 YES , 或者在 Interface Builder 这个视图的 inspector 里设置相关属性。
§ 限制事件递交给单个视图。 缺省情况下,一个视图的 exclusiveTouch 属性被设置为 NO , 这意味着这个视图不会阻塞该窗口中 的其它视图接收触摸事件。如果你把这个属性设置为 YES ,你标记这个视图以便,当它跟踪触摸 时,它是当前窗口中唯一可以跟踪触摸的视图。窗口中的其它视图将不能接收触摸事件。不过,被标记为“ exclusive touch ”的视图不能接收相同窗口中其它视图相关的触摸事件。如果一个手指接触了一个 exclusive-touch 视图, 那么这个触摸事件仅在该视图是当前 窗口中唯一跟踪这个手指的视图时才会被递交出去。如果一个手指触摸了一个 non-exclusive 视图, 那么这个触摸事件仅在没有其它手指 被一个 exclusive-touch 视图跟踪时才会被递交出去。
§ 限制事件递交给子视图。 一个自定义 UIView 类可以 重写 hitTest:withEvent: 来限制多点触摸事件递交给它的子视 图。请查看关于这个技术的讨论 “Hit-Testing” 。