【翻译】Implementing a custom gesture recognizer 实现自定义的手势识别器

——探索「什么时候」以及如何打造自定义的 Gesture Recognizer 。

概述

当 UIKit 内置的 Gesture Recognizer 不能满足需求时,你就可以自定义一个。UIKit包含了高度可配置的 Gesture Recognizer ,可以处理轻击 tap、长按 long press、拖动 pan、滑动 swipe、旋转 rotation 和捏合 pinch 的 touch 序列。

对于其他的 touch 序列,或者处理涉及按下按钮的手势,你可以自定义一个 Gesture Recognizer

译者注:touch 序列(touch sequence),指的是一个或多个 UITouch 对象,它们最终会组成一个 UIEvent 对象。

也可以用自定义的 Gesture Recognizer 来简化事件处理。例如,Leveraging Touch Input for Drawing Apps 这个示例代码就是用自定义的 Gesture Recognizer,来捕获 input 并把它展示到屏幕上,如图:

Leveraging Touch Input for Drawing Apps

想要自定义 Gesture Recognizer,需要先继承它。记得在你的代码文件开头导入对应头文件(OC:UIGestureRecognizerSubclass.h; Swift:UIKit.UIGestureRecognizerSubclass)。这些头文件定义了你必须重写的方法:

#import <UIKit/UIKit.h>
#import "UIGestureRecognizerSubclass.h"

在你的子类中,实现那些处理事件的方法。例如,如果你要处理的手势由touch 事件组成,那就实现 touchesBegan:withEvent:, touchesMoved:withEvent:, touchesEnded:withEvent:, 和 touchesCancelled:withEvent: 方法。用不断到来的事件更新你子类的 state 属性。

UIKit会用这个 state 来协调互动你 App 里的其他对象。

总结:什么时候该自定义一个Gesture Recognizer?当你觉得现有的不够用时;如何自定义?导入头文件,实现事件处理方法。(老实说我觉得这文章有点水)


【翻译】Implementing a custom gesture recognizer 实现自定义的手势识别器
http://example.com/2023/09/03/【翻译】Implementing a custom gesture recognizer实现自定义的手势识别器/
作者
发布于
2023年9月3日
许可协议