假设我目前正在跟踪拖动手势。在我的事件处理程序中,我使用一个阈值来确定拖动何时导致 Action 。当超过阈值时,我想指示拖动手势已完成。
我在文档中唯一能找到的就是这行 here :
If you change this property to NO while a gesture recognizer is currently recognizing a gesture, the gesture recognizer transitions to a cancelled state.
所以:
if (translation.y > 100) {
// do action
[self doAction];
//end recognizer
sender.enabled = NO;
sender.enabled = YES;
}
这可行,但看起来可能有更简洁的方法。
有谁知道以编程方式指示手势已结束的另一种方法?我希望有类似 -end:
的方法,它会生成状态为 UIGestureRecognizerStateEnded
的最终事件。
最佳答案
您是否定义了自定义 UIGestureRecognizer?如果您识别的手势与 Apple 定义的标准手势不同,因为它具有不同的阈值或与常规 UIPanGestureRecognizer 不同,那么创建您自己的 UIGestureRecognizer 可能是有意义的。 ( see subclassing notes )
如果你有 UIGestureRecognizer 的子类,你可以像这样简单地设置状态:
self.state = UIGestureRecognizerStateEnded;
您可能想在 touchesMoved:withEvent: 方法中执行此操作。另请注意:
“UIGestureRecognizer 的子类必须导入 UIGestureRecognizerSubclass.h。此头文件包含使其可读写的状态重新声明。”
另一方面,如果您只实现一个 UIGestureRecognizerDelegate,则状态是只读的,无法直接设置它。在那种情况下,您禁用/启用的方法可能是您能做的最好的。
关于ios - 如何以编程方式结束/重置 UIGestureRecognizer?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12278798/