2011-12-06 5 views
10

指がダウンしているときと、アップしているときを知るには、UITapGestureRecognizer
documentationは指がダウンしたときにをタップとして処理するだけで、UIGestureRecognizerStateBeginがあることを意味しますが、得られるのはすべてUIGestureRecognizerStateEndedです。
私は認識装置を登録するために使用するコードは次のとおりです。指のアップ/ダウンを検出するUITapGestureRecognizer

[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tap:)] 
+0

あなたは同じ問題は、このリンクをチェックアウトを持っている場合、それは美しさです:[guides.codepath.com](https://guides.codepath.com/ios/Using-Gesture-Recognizers#programmatically-add -and-configure-a-gesture-recognizer) – MoVod

答えて

18

UITapGestureRecognizerは、個別のジェスチャー認識であるため、始めまたは変更状態に移行することはありません。 UIGestureRecognizerクラスリファレンスから:

離散ジェスチャーのいずれかを認識 (UIGestureRecognizerStateRecognized)への可能性からの移行や を失敗(UIGestureRecognizerStateFailed)、彼らは成功したジェスチャーを解釈するか かによって異なります。ジェスチャ認識装置 がRecognizedに遷移すると、ジェスチャメッセージはそのターゲットに送信されます。

(もちろん、UIGestureRecognizerStateRecognized == UIGestureRecognizerStateEndedを思い出してください)。

docsは、認識されたと言うためにコードを起動する前に、終了ジェスチャ認識プログラムの状態を確認して終了状態にあることを確認する必要があります。彼らはタップジェスチャーが実際に開始された状態または変更された状態に移行したと言っているわけではありません(私は、ドキュメントが使用されている言語で少し誤解を招くことは認めていますが)。

タップジェスチャーレコグナイザの指ダウンイベントを確認したい場合は、touchesBegan:withEvent:を使用することをお勧めします。なぜなら、これはあなたが本当に後であるからです。

1

デリゲートメソッド-(BOOL)gestureRecognizer:shouldReceiveTouch:をオーバーライドできます。

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch { 
    NSLog(@"Hello from press down"); 

    return YES; 
} 
関連する問題