現在、ビューを 2 回タップするとズームインし、1 回タップすると新しいビューが表示されるようになっています。問題は、現在、ユーザーがトリプルタップすると、ズームが完了した後も新しいビューが表示されることです。ダブルタップ/ズーム後、0.25秒間タップ登録を無効にしたい。これを行う最善の方法は何ですか?ズームを完了として登録した後に起動されるメソッドが既にあるので、そこにスローできます。
ありがとう!
現在、ビューを 2 回タップするとズームインし、1 回タップすると新しいビューが表示されるようになっています。問題は、現在、ユーザーがトリプルタップすると、ズームが完了した後も新しいビューが表示されることです。ダブルタップ/ズーム後、0.25秒間タップ登録を無効にしたい。これを行う最善の方法は何ですか?ズームを完了として登録した後に起動されるメソッドが既にあるので、そこにスローできます。
ありがとう!
おそらく、ズームを開始するときとズームを終了するときuserInteractionEnabled
にビューに設定するのと同じくらい簡単なことを行うことができます。NO
YES
これは、UI デザインでよくある問題です。ズームを行うためにアニメーションを使用している場合は、メソッドでタップ認識機能を無効にして、完了ブロックで再び有効にすることができます。
yourTapRecognizer.enabled = NO;
yourTapRecognizer.enabled = YES;
3 つの簡単な方法があり、いずれかを選択できます。
gestureRecognizer.enabled = NO;
)view.userInteractionEnabled = NO;
)[[UIApplication sharedApplication] beginIgnoringInteractionEvents]
)インタラクションを再度有効にするには、次を使用できます
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t) (0.25 * NSEC_PER_SEC));
dispatch_after(popTime, dispatch_get_main_queue(), ^(void) {
//enable recognizer, set user interaction to YES or call endIgnoringInteractionEvents
});
ただし、やみくもにマジック タイム ( ) を使用するのではなく、ハンドラーを何らかのイベントに関連付けることをお勧めします0.25 secs
。あなたがすでにそのような方法を持っているなら、あなたにとって良いことです!