2010-12-30 8 views
10

UILongPressGestureは、バージョン3.2以降で使用できます。しかし、私は最大限の互換性のためのアプリケーションを開発しようとしているので、以下のiOSで長押しジェスチャーの機能を取得するには3.2

誰もがあなたのビューでtouches...メソッドを実装したiOS v2.0の中で

+1

iPhone OS 2.xをApp Store向けに送信する場合、iPhone OS 2.xをサポートできないことに注意してください。 Appleが受け付ける最小バージョンのターゲットは3.0になりました。 –

答えて

18

1本の指では、非常に簡単です。touchesBeganメソッドでタイマーを開始し、タイマーが起動したときにアクションをトリガーします。あなたが発砲する前にtouchesEndedを取得する場合は、タイマーをキャンセルしてください。 performSelector ... afterDelayメソッドを使用する実装を次に示します。

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { 
    [self performSelector:@selector(fireLongPress) 
       withObject:nil 
       afterDelay:LONG_PRESS_THRESHOLD]; 
} 

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event { 
    [NSObject cancelPreviousPerformRequestsWithTarget:self]; 
} 

- (void)fireLongPress { 
    // do what you want to do 
} 

また、指があまりにも遠くに移動すると、タイマーを殺すこともできます。

マルチタッチでは、少し複雑です。どんな接触があるかを把握し、何をすべきかを決める必要があります。一方の指が十分長く押されていても、もう一方の指が押されていないとき(またはUILongPressGestureRecognizerが何をしているのか把握していないとき)

+5

代わりに、[NSObject cancelPreviousPerformRequestsWithTarget:self] 'を使用しなければなりませんでした。 –

1

を長押しジェスチャーを達成するためにどのように私を導いてくださいすることができたiOS ver2.0をターゲットにしています。 touchesMoved:withEvent:イベントのない一定の時間がtouchesBegan:withEvent:touchesEnded:withEvent:の間になると、長い押しがあります。

関連する問題