UILongPressGestureは、iOSver3.2以降で使用できます。しかし、私は最大の互換性のためにアプリケーションを開発しようとしているので、iOSver2.0をターゲットにしています
iOSv2.0で長押しジェスチャーを実行する方法を教えてください。
UILongPressGestureは、iOSver3.2以降で使用できます。しかし、私は最大の互換性のためにアプリケーションを開発しようとしているので、iOSver2.0をターゲットにしています
iOSv2.0で長押しジェスチャーを実行する方法を教えてください。
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
)に何をするかを決定する必要があります。
touches...
ビューにメソッドを実装します。イベントの前後に一定の時間が経過したtouchesBegan:withEvent:
場合は、長押しします。touchesEnded:withEvent:
touchesMoved:withEvent: