0

そのため、1 本指の長押しジェスチャ認識エンジンを実装しましたが、認識エンジンは常に UIGestureRecognizerStateBegan 状態を欠いているようです...指を動かさずに長押しして離すと、StateEnded デバッグ メッセージが表示されます。長押しして指を少し動かして離すと、StateChanged および StateEnded デバッグ メッセージが表示されます。しかし、私は StateBegan を見たことがありません。

UIPanGestureRecognizer でこの問題が発生しないようにします。パンは、Began->Changed->Ended からすべての正しいジェスチャ状態を取得します。

- (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;
    }   
}
4

1 に答える 1

1

私は同様の問題を抱えていましたが、それはUILongPressGestureRecognizerのセットアップが原因でした:使用していた元のサンプルコードはnumberOfTapsRequired = 1を指定し、クイックタップしてリリースし、それを機能させるためにロングタップする必要がありました数秒間タップして押し続けるだけです。numberOfTapsRequiredを削除すると、コードは期待どおりに動作するようになりました。これがお役に立てば幸いです=)

于 2011-09-05T19:48:40.477 に答える