Как отменить /reset UIGestureRecognizer
как я могу отменить или reset a 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;
}
}
Спасибо за помощь!
Ответы
Ответ 1
Я понял!: -)
Может быть, кто-то еще работает в этой проблеме, вот решение:
if (waitForSomething) {
recognizer.enabled = NO;
recognizer.enabled = YES;
return;
}
Следующее событие будет UIGestureRecognizerStateFailed
, за которым следует UIGestureRecognizerStateBegan
.
Ответ 2
Swift 4:
if waitForSomething {
recognizer.isEnabled = false
recognizer.isEnabled = true
return
}
Ответ 3
Если вам нужно сделать это более чем в одном месте:
в Свифте
extension UIGestureRecognizer
{
func cancel() {
isEnabled = false
isEnabled = true
}
}