我有一个应用程序有一个相当大的 PDF 格式的帮助部分。我发现 PDF 太大了,我可以从仪器中看出它给处理器带来了太多压力,所以我打算逐步淘汰它。
我想,一个更简单的实现是使用 UILongPressGestureRecognizer
,我可以将它附加到每个 UI 元素,这些元素可能会在弹出窗口或 UIMenuController
中显示指定的文本,指示所选元素的功能。
所以我的问题是:如何将标签之类的东西附加到 View 中的每个元素,以便它可以传递给单个方法?当我尝试标记时,我发现无法通过方法签名的 (id)sender
部分访问它,因此无法区分元素。
编辑:对下面的人:虽然你已经解决了我关于确定 View 标签的问题,但如何将手势识别器附加到 UIBarButtonItem 以确定它的标签?您的实现允许使用非常讨厌的无法识别的选择器,因为 UIGestureRecognizers 没有标记属性。
最佳答案
您可以从作为发件人传入的对象派生标签。只需要检查它的类并适本地转换它。 tag
是一个 UIView
属性,所以我们将从那里开始。
- (void)someMethod:(id)sender
{
if (![sender isKindOfClass:[UIView class]])
return;
UIView *senderView = (UIView *)sender;
NSInteger tag = senderView.tag;
}
关于objective-c - 长按 UI 元素(或如何确定按下的是哪个元素?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8749809/