如何取消/重置UIGestureRecognizer

问题描述 投票:19回答:3

我怎么可以取消或重置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;
    }
}

谢谢您的帮助!

iphone objective-c ios uigesturerecognizer
3个回答
39
投票

我知道了! :-)

也许别人在这个问题上运行,这里是解决方案:

if (waitForSomething) {
    recognizer.enabled = NO;
    recognizer.enabled = YES;
    return;
}

接下来的事件将被UIGestureRecognizerStateFailed之后UIGestureRecognizerStateBegan


0
投票

斯威夫特4:

if waitForSomething {
    recognizer.isEnabled = false
    recognizer.isEnabled = true
    return
}

0
投票

如果你需要做到这一点在一个以上的地方:

在斯威夫特

extension UIGestureRecognizer
{
    func cancel() {
        isEnabled = false
        isEnabled = true
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.