10

UILongPressGestureは、iOSver3.2以降で使用できます。しかし、私は最大の互換性のためにアプリケーションを開発しようとしているので、iOSver2.0をターゲットにしています

iOSv2.0で長押しジェスチャーを実行する方法を教えてください。

4

2 に答える 2

18

1本の指の場合、これは非常に簡単です。touchesBeganメソッドでタイマーを開始し、タイマーが起動したときにアクションをトリガーします。touchesEnded発火する前にタイマーを取得した場合は、タイマーをキャンセルしてください。このメソッドを使用する実装は次のperformSelector:withObject: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)に何をするかを決定する必要があります。

于 2010-12-30T20:40:20.957 に答える
1

touches...ビューにメソッドを実装します。イベントの前後に一定の時間が経過したtouchesBegan:withEvent:場合は、長押しします。touchesEnded:withEvent:touchesMoved:withEvent:

于 2010-12-30T20:29:25.510 に答える