0

私は2つの異なるタッチイベントでボタンを実装しようとしています。たとえば、ユーザーがボタンをタップすると(短時間タッチすると)、actionTappedがトリガーされ、ユーザーがボタンを長時間タッチすると、actionTouchedがトリガーされます。

このリンクはアイデアを与えるかもしれませんが、それはアクションを何度も繰り返すようにします。

4

4 に答える 4

1

touchDownイベントにタイマーを設定すると、longPress関数が実行されます。touchUpイベントでは、タイマーをキャンセルできます。かなりシンプルです。

于 2012-04-19T12:32:06.837 に答える
1

iOS SDKには、ニーズに最適な2つのジェスチャレコグナイザーが含まれています。

  • UITapGestureRecognizer
  • UILongPressGestureRecognizer

アクションを追加せずにボタンを作成します。次に、2つのジェスチャレコグナイザーを作成します。各タイプに1つずつ、それぞれが必要なアクションにマップされます。次に、ジェスチャーレコグナイザーをボタンに接続します。

于 2012-04-19T22:19:49.787 に答える
0

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");
    }
}
于 2012-04-24T14:54:25.947 に答える
0

私は次のことをします:

  1. タッチダウン方式の場合:現在の時刻を保存します(これを呼び出しますtouchDownTime)。
  2. あなたのタッチアップ方法で:計算するtime elapsed = current time - touchDownTime

    2.1秒に変換

    2.2時間が経過した>必要な時間の場合はaction1(ロングタッチ)を実行し、そうでない場合はaction2(ショートタッチ)を実行します

于 2012-04-19T12:37:13.397 に答える