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

UIGestureRecognizer有一个属性view,它是手势识别器附加到的视图。

因此,在您的处理程序方法中,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 回答