UILongPressGestureRecognizer缺少UIGestureRecognizerStateBegan状态!

时间:2010-07-26 22:12:53

标签: objective-c cocoa-touch ipad uigesturerecognizer

所以我实现了一个单指长按手势识别器,但识别器似乎总是缺少UIGestureRecognizerStateBegan状态...... 如果我长按w / o移动手指并抬起,我会收到StateEnded调试消息。 如果我长按并稍微移动手指然后抬起,我会收到StateChanged和StateEnded调试消息。 但我从未见过StateBegan。

UIPanGestureRecognizer没有此问题 - Pan从Began-> Changed->结束获取所有正确的手势状态。

- (void)handleLongPress:(UILongPressGestureRecognizer *)recognizer {
    CGPoint location = [recognizer locationInView:self];

    switch (recognizer.state) {
        case UIGestureRecognizerStateBegan:
            NSLog(@"!!!!handleLongPress: StateBegan !!!!!");
            break;
        case UIGestureRecognizerStateChanged:
            NSLog(@"!!!!handleLongPress: StateChanged !!!!!");
            break;
        case UIGestureRecognizerStateEnded:
            NSLog(@"!!!!handleLongPress: StateEnded !!!!!");
            break;
        default:
            break;
    }   
}

1 个答案:

答案 0 :(得分:1)

我遇到了类似的问题,它是由UILongPressGestureRecognizer设置引起的:我使用的原始示例代码指定了numberOfTapsRequired = 1,我必须快速点击并释放,然后长按以使其工作而不是仅仅点击并按住几秒钟。当我删除numberOfTapsRequired时,代码现在表现得像我预期的那样。希望这有助于=)