2012-03-15 5 views
6

みんな、二UILongPressGestureRecognizer、1が起動することができ、他のことはできません

私は2 UILongPressGestureRecognizerを追加しました。私が欲しいのは、2つのボタンが0.3秒間押し下げられ、 "shortPressHandler"が起動するときです。ユーザーがこれらの2つのボタンをさらに1.2秒間押し続けると、「longPressHandler」が起動します。今私はshortPressHandlerを起動し、longPressHandlerは決して起動しませんでした。私は、shortPressGestureが最初に認識され、longPressGestureが決してチャンスを得ることができない可能性があると思います。誰も私が欲しいものを達成する方法を示すことができますか?前もって感謝します。

UILongPressGestureRecognizer *longPressGesture =[[[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(longPressHandler:)] autorelease]; 
longPressGesture.numberOfTouchesRequired = 2; 
longPressGesture.minimumPressDuration = 1.5; 
longPressGesture.allowableMovement = 10; 
longPressGesture.cancelsTouchesInView = NO; 
longPressGesture.enabled = true; 
[self.view addGestureRecognizer:longPressGesture]; 

UILongPressGestureRecognizer *shortPressGesture =[[[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(shortPressHandler:)] autorelease]; 
shortPressGesture.numberOfTouchesRequired = 2; 
shortPressGesture.minimumPressDuration = 0.3; 
shortPressGesture.allowableMovement = 10; 
shortPressGesture.cancelsTouchesInView = NO; 
shortPressGesture.enabled = true; 
[self.view addGestureRecognizer:shortPressGesture]; 
+0

ありがとうございました。ボタンが離されていなくても、私は短くしたいと思ったら、何をすべきか知っていますか? – Globalhawk

+0

申し訳ありませんが、私はこのメッセージが表示されませんでした。あなたの投稿の下に「@name ...」と書かなければなりません。あなたが好きなことを理解していれば、ユーザープレス、shortPressは0.3s彼が彼のプレスを解放しなければ、プレスは1.2秒後に解雇される。あれは正しいですか? –

+0

@rokjarcこれはまさに私が欲しいものです。ありがとう。 – Globalhawk

答えて

6

shortPressGestureを追加する前に、この行を挿入します。

[shortPressGesture requireGestureRecognizerToFail:longPressGesture]; 

注:shortGestureはすぐ保持の0.3秒後に呼び出されませんが、それは0.3秒と長い1.2秒の間であった場合はタップがリリースされたときに。タップが1.2秒より長い場合(あなたのコードにはおそらく打ち間違いが1.5秒あります)、longPressGestureだけが起動します。

EDIT:あなたは(長押しの場合)火災にあなたのイベントハンドラの両方が必要な場合は

しかし、あなたがこれを行う必要があります。

のごUIView<UIGestureRecognizerDelegate>.hでファイルを実装する必要があります。行を追加するのではなく、を今すぐ

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer { 

    return YES; 
} 

:あなたは、このメソッドを追加.mファイルで

shortPressGesture.delegate = self; 
longPressGesture.delegate = self; 

注:

[shortPressGesture requireGestureRecognizerToFail:longPressGesture]; 

あなたはこの2行を追加します。他のものがある場合はUIGestureRecognisers linke dをUIVIewに追加する場合は、shouldRecognizeSimultaneouslyWithGestureRecognizer:にチェックを追加する必要があります。それ以外の場合は、YESを返すだけです。

+0

それは魅力のように動作します!どうもありがとうございました! :-) – Globalhawk

+0

@Globalhawk:あなたは大歓迎です:) –

関連する問題