0

私の問題は次のとおりです。

標準のViewControllerで、添付ファイル付きのメッセージビューを表示しています。ユーザーが添付アイコンを押し続けると、画面に画像が表示され、ユーザーが離すと画像が消えます。これは、ユーザーが画像を表示しているときにスクリーンショットを検出するのに役立ちます。

長押しのジェスチャ認識機能を使用してタッチを検出してから、touchsEndedまたはtouchesCancelledを使用してタッチのリリースを検出します。

2回目のタッチのリリースが報告されないため、ユーザーが2本目の指で画面を押すと問題が発生します。コードは以下のとおりです。メソッドは次の順序で呼び出されます。

  1. 最初の長押し->attachmentLongPressedと呼ばれる
  2. 2回目の長押し->attachmentLongPressedと呼ばれる
  3. 最初の指を離す->touchesEndedcalled
  4. 人差し指を離す->何も呼ばれない

    -(void)attachmentImageLongPressed:(UIImageView *)sender{
    
        if(!self.isAttachmentOpen){
    
            [self setAttachmentOpen:YES];
    
            // Show image...
    
        }
    }
    
    -(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{
    
        [self setAttachmentOpen:NO];
    
        // Remove image from view
    
    }
    
    -(void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event
    {
        if(self.isAttachmentOpen){
    
            [self screenshotDetected];
    
        }
    }
    

その結果、画像ビューは画面に表示されたままになり、それを閉じる方法はありません。誰か提案がありますか?

4

1 に答える 1

0

2 本目の指を離すと touchesEnded と呼ばれるべきだと思います。すべてのコールバックからのすべてのタッチをログに記録して、どのメソッドが呼び出されているかを調べることができます。

ただし、長押しジェスチャによってタッチ終了イベントが遅延する可能性があるため、delaysTouchesEnded を FALSE に設定してみてください。

ジェスチャLongPressed.delaysTouchesEnded = FALSE

于 2013-03-06T00:39:25.403 に答える