我知道已经有很多问题与此类似,但我已经尝试了所有问题,并且在未能解决我的问题时,我发布了我的问题。首先我尝试的问题是:
1)How to get button.tag via longPressGestureRecognizer?
在我的应用程序中,我的xib中有12 UIButtons
。在UIButton
长按时,我会调用此方法。每次点击不同的gesture.view.tag
时,使用UIButtons
属性总是给我相同的标记(即)。
- (IBAction)longPress:(id)sender {
UILongPressGestureRecognizer* gesture=(UILongPressGestureRecognizer*)sender;
NSLog(@"Tag---> %d",gesture.view.tag);
}
我的xib看起来像这样:
更新1:
在有人对xib感到困惑之前,我必须说UIButtons
设置为自定义类型,因此它们在UIImageView
下是不可见的。
答案 0 :(得分:7)
UIGestureRecognizer
似乎可以跟踪多个视图,但它不会报告它正在跟踪多个视图。因此,当您检查view
的{{1}}属性时,会将其设置为添加识别器的最后一个视图。
来自docs:
手势识别器针对 特定视图 以及所有该视图的子视图进行了热门测试。因此必须与该观点相关联。要建立该关联,您必须调用UIView方法addGestureRecognizer:。手势识别器不参与视图的响应者链。
此方案中的解决方案是为每个需要识别的视图设置一个手势识别器,并将它们链接到同一个委托选择器。
注意:这个问题(和我的回答)起源于NSChat chat room, on March 20th, 2013.决定在此发布以供将来参考。