iOS 手势识别与触摸处理全解析
1. 手势识别器基础
在 iOS 开发中,手势识别器是处理用户交互的重要工具。对于一些内置控件,如 UITapGestureRecognizer
,当视图不是 UIButton
本身时,可能会返回 false
。其他内置控件也可能实现 gestureRecognizerShouldBegin(_:)
方法,以防止与手势识别器的意外交互。例如, UISlider
实现该方法后, UISwipeGestureRecognizer
不会妨碍用户滑动滑块。
1.1 手势识别器子类化
要对 UIGestureRecognizer
或其内置子类进行子类化,需要完成以下步骤:
1. 导入 UIKit.UIGestureRecognizerSubclass
,这样可以设置手势识别器的 state
属性(该属性通常是只读的),并暴露可能需要重写的方法声明。
2. 重写所需的触摸方法(就像手势识别器是 UIResponder
一样)。如果是对内置手势识别器子类进行子类化,几乎肯定会调用 super
方法,以利用内置行为。在重写触摸方法时,要从手势识别器的角度思考,因为这些方法被调用时,手势识别器正在设置其状态,必须连贯地参与这个过程。
1.2 示例:水平拖动手势识别器
为了实