3

我知道已经有很多与此类似的问题,但我已经尝试了所有这些问题,并且在未能解决我的问题时,我发布了我的问题。首先我尝试的问题是:

1)如何通过longPressGestureRecognizer获取button.tag?

2) UIButton 长按事件

在我的应用程序UIButtons中,我的 xib 中有 12 个。长按UIButton我有这个方法被调用。每次gesture.view.tag单击不同的UIButtons.

- (IBAction)longPress:(id)sender {

     UILongPressGestureRecognizer* gesture=(UILongPressGestureRecognizer*)sender;
     NSLog(@"Tag---> %d",gesture.view.tag);
  }

我的 xib 看起来像这样:

在此处输入图像描述

更新1:

在有人对 xib 感到困惑之前,我必须说它UIButtons设置为自定义类型,因此它们在UIImageView.

4

1 回答 1

7

看起来 aUIGestureRecognizer可以跟踪多个视图,但它没有报告它正在跟踪多个视图。因此,当您检查viewa 的属性时UIGestureRecognizer,它被设置为添加识别器的最后一个视图。

文档

手势识别器对针对特定视图和所有该视图的子视图进行命中测试的触摸进行操作。因此,它必须与该视图相关联。要建立这种关联,您必须调用 UIView 方法 addGestureRecognizer:。手势识别器不参与视图的响应者链。

这种情况下的解决方案是为每个需要识别的视图设置一个手势识别器,并将它们链接到同一个委托选择器。

注意:这个问题(和我的答案)起源于2013 年 3 月 20 日的 NSChat 聊天室。决定在这里发布以供将来参考。

于 2013-03-20T13:23:22.337 回答