0

よろしくお願いします。の奇妙な行動を共有したいと思いUILongPressGestureRecognizerます。

UIView *v = [UIView alloc] initWithFrame:CGRectMake(0,0,20,20)];
UILongPressGestureRecognizer *longpressGesture1 = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(tapped:)];
[v addGestureRecognizer:longpressGesture1];

ここでは、ジェスチャ レコグナイザーを処理するデリゲートです。

-(IBAction)tapped:(UILongPressGestureRecognizer *) gesture

{ 
    switch ([gesture state]) {
        case UIGestureRecognizerStateBegan:
        {

            NSLog(@"Long Tap detacted.");  

        }
            break;
        case UIGestureRecognizerStateChanged:
        {
            NSLog(@"UIGestureRecognizerStateChanged");


        }
            break;
        case UIGestureRecognizerStateEnded:
        {
            NSLog(@"Long Tap ended.");

        }
            break;

    }

}

このコードは、iOS 4 および 5 では期待どおりに完全に機能しますが、Retina ディスプレイを搭載した iOS 6 では、長いタップを実行するUIGestureRecognizerStateBeganと、1 回の長いタップに対して 2 回呼び出され、アプリケーションがクラッシュします。どんな助けでも大歓迎です。

4

1 に答える 1

2

UILongPressGestureRecognizer は継続的なイベント レコグナイザーです。状態を見て、これがイベントの開始、中間、終了のいずれであるかを確認し、それに応じて行動する必要があります。

指を押したり離したりするため、2回呼び出します。

最初の呼び出しは、長いタップが検出されたことを示しています。つまり、UIGestureRecognizerStateBegan 2 番目の呼び出しは、そのタップの終わりがあることを示しています。UIGestureRecognizerStateBegan

タップの状態は3種類

  1. UIGestureRecognizerStateBegan
  2. UIGestureRecognizerStateChanged
  3. UIGestureRecognizerStateEnded

指をドラッグすると、状態が変化したことを示す複数回呼び出されます。

詳細については、 UILongPressGestureRecognizer クラス リファレンスに従ってください。

于 2013-03-12T14:15:37.667 に答える