我怎么可以取消或重置UIGestureRecognizer
?问题是,如果我设置waitForSomething
手势期间NO
,接下来的事件是UIGestureRecognizerStateChanged
。但是,第一个事件应该是UIGestureRecognizerStateBegan
。
我的代码:
- (void) panned:(UIPanGestureRecognizer *) recognizer {
if (waitForSomething) {
// cancel or reset the recognizer!
// because the next event should be UIGestureRecognizerStateBegan and not UIGestureRecognizerStateChanged
return;
}
switch (recognizer.state) {
case UIGestureRecognizerStateBegan:
// important initialisation code
break;
case UIGestureRecognizerStateChanged:
// do something
break;
}
}
谢谢您的帮助!
我知道了! :-)
也许别人在这个问题上运行,这里是解决方案:
if (waitForSomething) {
recognizer.enabled = NO;
recognizer.enabled = YES;
return;
}
接下来的事件将被UIGestureRecognizerStateFailed
之后UIGestureRecognizerStateBegan
。
斯威夫特4:
if waitForSomething {
recognizer.isEnabled = false
recognizer.isEnabled = true
return
}
如果你需要做到这一点在一个以上的地方:
在斯威夫特
extension UIGestureRecognizer
{
func cancel() {
isEnabled = false
isEnabled = true
}
}