1

ジェスチャ認識エンジンを使用して、マウスダウンとマウスアップの両方をキャッチしたい。ただし、マウスダウンが引っかかると、マウスアップが引っかかることはありません。

これが私がしたことです:

最初にカスタム MouseGestureRecognizer を作成します。

@implementation MouseGestureRecognizer
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {  
    [super touchesBegan:touches withEvent:event];  
    self.state = UIGestureRecognizerStateRecognized;  
}  

-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {  
    [super touchesEnded:touches withEvent:event];  
    self.state = UIGestureRecognizerStateRecognized;  
}  
@end  

次に、レコグナイザーをビュー コントローラーのビューにバインドします。

UIGestureRecognizer *recognizer = [MouseGestureRecognizer alloc] initWithTarget:self action:@selector(handleGesture:)];  
[self.view addGestureRecognizer:recognizer];  

ビューでマウスをクリックすると、touchesBegan が呼び出されますが、touchesEnded は呼び出されません。UIGestureRecognizerStateRecognized が原因ですか?

4

2 に答える 2

4

set toのUILongPressGestureRecognizer代わりにa を使用できるかもしれません。minimumPressDuration0

于 2011-11-26T12:15:06.143 に答える
2

メソッドのUIGestureRecognizer クラス参照からreset:

resetランタイムは、ジェスチャ認識機能の状態が UIGestureRecognizerStateEnded または UIGestureRecognizerStateRecognized に設定された後に、このメソッド ( ) を呼び出します。(...) このメソッドが呼び出された後、ランタイムは 残りのアクティブなタッチをすべて無視します。つまり、ジェスチャ レコグナイザーは、開始されたが終了していないタッチの更新をそれ以上受信しません。

そうです、状態をUIGestureRecognizerStateRecognizedin に設定しているためですtouchesBegan

編集

touchesBegan回避策として、1 つは 用、もう1 つは 用の 2 つの認識機能を作成touchesEndedし、両方をターゲット ビューに追加します。

UIGestureRecognizer *recognizer1 = [TouchDownGestureRecognizer alloc] initWithTarget:self action:@selector(handleGesture:)];
UIGestureRecognizer *recognizer2 = [TouchUpGestureRecognizer alloc] initWithTarget:self action:@selector(handleGesture:)];
[self.view addGestureRecognizer:recognizer1];
[self.view addGestureRecognizer:recognizer2];
于 2010-12-16T23:05:59.133 に答える