UIPanGestureRecognizer是离散型还是连续型手势识别器?
UIPanGestureRecognizer 手势类型判定结论
你的理解完全正确,UIPanGestureRecognizer 属于连续型手势识别器,文档开篇写的“离散手势识别器”是明确的笔误,不用采信。
两类手势识别器的核心区分规则
- 离散型手势识别器:只会在手势识别成功时触发一次回调,没有中间过程状态。常见的点击手势(
UITapGestureRecognizer)、轻扫手势(UISwipeGestureRecognizer)都属于这类,状态只会在possible、failed、recognized三个值之间切换,不会出现began、changed这类过程态。 - 连续型手势识别器:会覆盖手势从触发、过程变化到结束的完整交互周期,整个过程中会持续触发回调,标准状态流转路径为:
possible→began→changed(可多次触发) →ended/cancelled/failed。
对应UIPanGestureRecognizer的实际行为
你梳理的状态流转逻辑完全符合连续型手势的特征:
- 触摸手指数满足
minimumNumberOfTouches配置、移动距离达到平移识别阈值时,手势进入began状态 - 手指保持按压屏幕移动的过程中,会持续抛出
changed状态回调,实时返回当前的位移、速度等参数 - 所有手指抬起后,手势进入
ended状态,整段交互结束
这套逻辑和离散手势“仅终态触发单次回调”的规则完全不符,实际开发中UIPanGestureRecognizer也始终被归类为连续手势处理,文档开篇的矛盾表述属于官方文档的校对疏漏,按照连续手势的逻辑编写业务代码即可。
内容的提问来源于stack exchange,提问作者OMGPOP
相关产品推荐
相关产品推荐

