0

こんな風にLPGRを設置しているのですが、LPGRごとにタグを作成できないかと考えていました。すべてのボタンのどれが押されているかを知るために、これを行う必要があります...

UILongPressGestureRecognizer *longpressGesture = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(longPressHandler:)];
longpressGesture.minimumPressDuration = 2;
[longpressGesture setDelegate:self];
[pushButton addGestureRecognizer:longpressGesture];

そして、以下の私の方法...

- (void)longPressHandler:(UILongPressGestureRecognizer *)gestureRecognizer {
NSLog(@"longPressHandler");
}

セレクターを介して引数を渡すことができないことはわかっているので、LPGR にタグを割り当てることができるかどうか、またはメソッドで LPGR を使用していたボタンのタグを取得できるかどうか疑問に思っていましたか? これは可能ですか>?

編集:

NSInteger *tag = [gestureRecognizer.view.tag];
NSLog(@"%@ longPressHandler",tag);
4

2 に答える 2

2

UIGestureRecognizerviewジェスチャレコグナイザがアタッチされているビューであるプロパティがあります。

したがって、ハンドラーメソッドでgestureRecognizer.viewは、はLPGRがアタッチされているボタンでgestureRecognizer.view.tagあり、ボタンのタグです。

追加: サンプルコード:

- (void)longPressHandler:(UILongPressGestureRecognizer *)gestureRecognizer {
    NSLog(@"longPressHandler");
    NSInteger tag = gestureRecognizer.view.tag;
    NSLog(@"%d longPressHandler",tag);
}
于 2012-07-29T21:53:46.933 に答える
0

のサブクラスを作成してプロパティをUILongPressGestureRecognizer追加するだけです。関連オブジェクトを使用して、プロパティにカテゴリを追加するtagこともできます。

于 2012-07-29T21:48:08.820 に答える