3.2未満のiOSでロングプレスジェスチャーの機能を取得する方法

StackOverflow https://stackoverflow.com/questions/4565889

  •  14-10-2019
  •  | 
  •  

質問

uilongpressgestureは、iOS Ver 3.2以降で利用できます。しかし、私は最大限の互換性のためにアプリケーションを開発しようとしているため、iOS ver2.0をターゲットにしています

iOS v2.0でロングプレスのジェスチャーを達成する方法については、誰でも教えてもらえますか

役に立ちましたか?

解決

一本の指の場合、それは非常に簡単です:でタイマーを開始します 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
}

指が行き過ぎている場合、タイマーを殺したいと思うでしょう。

MultiTouchを使用すると、もう少し複雑です。どのタッチがどれであるかを追跡する必要があります。たとえば、1つの指が十分に長く押したときに何をすべきかを決定する必要があります UILongPressGestureRecognizer します)。

他のヒント

実装します touches... あなたの見解の方法。一定の時間が経過した場合 touchesBegan:withEvent:touchesEnded:withEvent: 何もありません touchesMoved:withEvent: イベント、あなたは長い報道をしています。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top