在长按手势识别器上获取错误的UIButton标签

roh*_*tel 3 iphone objective-c uibutton uigesturerecognizer ios

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

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);
  }
Run Code Online (Sandbox Code Playgroud)

我的xib看起来像这样:

在此输入图像描述

更新1:

在有人与xib混淆之前,我必须说它UIButtons被设置为自定义类型,因此它们是不可见的UIImageView.

Ric*_*III 7

似乎a UIGestureRecognizer可以跟踪多个视图,但它不会报告它正在跟踪多个视图.因此,当您检查a的view属性时UIGestureRecognizer,它将设置为添加识别器的最后一个视图.

来自文档:

手势识别器根据对特定视图和所有视图的子视图进行经过测试的触摸进行操作.因此必须与该观点相关联.要建立该关联,您必须调用UIView方法addGestureRecognizer:.手势识别器不参与视图的响应者链.

此场景中的解决方案是为每个需要识别的视图设置一个手势识别器,并将它们链接到同一个委托选择器.

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