1. ホーム
  2. ios

[解決済み] UIButton 長押しイベント

2023-04-11 20:45:14

質問

ボタンの長押しをエミュレートしたいのですが、どうすればよいでしょうか。タイマーが必要だと思います。 なるほど UILongPressGestureRecognizer がありますが、このタイプをどのように利用すればよいのでしょうか?

どのように解決するのですか?

まず最初に UILongPressGestureRecognizer インスタンスを作成し、ボタンにアタッチします。

UILongPressGestureRecognizer *longPress = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(longPress:)];
[self.button addGestureRecognizer:longPress];
[longPress release];

そして、ジェスチャーを処理するメソッドを実装します。

- (void)longPress:(UILongPressGestureRecognizer*)gesture {
    if ( gesture.state == UIGestureRecognizerStateEnded ) {
         NSLog(@"Long Press");
    }
}

さて、これが基本的な考え方でしょう。押す時間の最小値や、どの程度の誤差が許容されるかを設定することもできます。また、ジェスチャーを認識した後、このメソッドは何度か呼ばれるので、最後に何かしたい場合は、その状態を確認して処理する必要があることに注意してください。