私は2つの異なるタッチイベントでボタンを実装しようとしています。たとえば、ユーザーがボタンをタップすると(短時間タッチすると)、actionTappedがトリガーされ、ユーザーがボタンを長時間タッチすると、actionTouchedがトリガーされます。
このリンクはアイデアを与えるかもしれませんが、それはアクションを何度も繰り返すようにします。
私は2つの異なるタッチイベントでボタンを実装しようとしています。たとえば、ユーザーがボタンをタップすると(短時間タッチすると)、actionTappedがトリガーされ、ユーザーがボタンを長時間タッチすると、actionTouchedがトリガーされます。
このリンクはアイデアを与えるかもしれませんが、それはアクションを何度も繰り返すようにします。
touchDownイベントにタイマーを設定すると、longPress関数が実行されます。touchUpイベントでは、タイマーをキャンセルできます。かなりシンプルです。
iOS SDKには、ニーズに最適な2つのジェスチャレコグナイザーが含まれています。
アクションを追加せずにボタンを作成します。次に、2つのジェスチャレコグナイザーを作成します。各タイプに1つずつ、それぞれが必要なアクションにマップされます。次に、ジェスチャーレコグナイザーをボタンに接続します。
OK、これが私の解決策です。cheduledTimerWithTimeIntervalは、タッチする最小間隔です。
- (IBAction) micButtonTouchedDownAction {
self.micButtonTimer = [NSTimer scheduledTimerWithTimeInterval:0.5 target:self selector:@selector(micButtonAction:) userInfo:nil repeats:YES];
self.micButtonReleased = FALSE;
}
- (IBAction) micButtonTouchedUpInsideAction {
self.micButtonReleased = TRUE;
}
- (IBAction) micButtonTouchedUpOutsideAction {
self.micButtonReleased = TRUE;
}
- (void) micButtonAction:(NSTimer *)timer {
[self.micButtonTimer invalidate];
self.micButtonTimer = nil;
if(self.micButtonReleased) {
NSLog(@"Tapped");
}
else {
NSLog(@"Touched");
}
}
私は次のことをします:
touchDownTime
)。あなたのタッチアップ方法で:計算するtime elapsed = current time - touchDownTime
2.1秒に変換
2.2時間が経過した>必要な時間の場合はaction1(ロングタッチ)を実行し、そうでない場合はaction2(ショートタッチ)を実行します