【问题标题】:Can a Tap Gesture Recognizer in IB be used on a UILabel and/or UIImageViewIB 中的点击手势识别器能否用于 UILabel 和/或 UIImageView
【发布时间】:2011-12-29 09:30:57
【问题描述】:

我有一个带有单个 UIView 的 xib,其中包含一堆图像和标签。如果我将 Tap Gesture Recognizer 拖到父视图上,它运行良好,但我需要添加代码来确定点击的位置,以便我可以正确响应点击的标签。

我认为如果我可以改为将手势识别器拖动到每个标签和/或图像,并将 IBAction 连接到我做出适当响应的每个位置,会容易得多。不幸的是,我无法让它发挥作用。我只能从父视图中获取要执行的委托方法。

我所做的是将一个 Tap Gesture Recognizer 拖到一个标签上,然后将视图控制器连接为 TGR 的委托,并连接一个 IBAction 方法来处理点击。除了使用 IBAction 方法外,我尝试在gestureRecognizerShouldBegin:gestureRecognizer 委托方法中分配目标和操作方法没有成功。

这不应该有效吗,还是我只是一厢情愿?

感谢您的帮助。

约翰

【问题讨论】:

    标签: iphone xcode uitapgesturerecognizer


    【解决方案1】:

    在 UIImages 和 UILabels 上,userInteractionEnabled 默认设置为 NO。您可以同时使用手势识别器,但首先您必须重置此属性。

    在 Interface Builder 或 Storyboard 中,在标签或图像上,选中 userInteractionEnabled 复选框。

    或者,在代码中,只需执行以下操作(Objective-C):

    myLabel.userInteractionEnabled = YES;
    myImage.userInteractionEnabled = YES;
    

    (斯威夫特):

    myLabel.userInteractionEnabled = true
    myImage.userInteractionEnabled = true
    

    【讨论】:

    • 奇怪的是,选中 IB 中的框适用于标签,但对于图像,我能让它工作的唯一方法是在代码中完成。
    • 我想我知道为什么会有差异了。如果您对多个对象使用相同的 IBAction 并选中两者的 userInteractionEnabled 复选框,则只有选中的第一个似乎有效。第二个,或两者都必须在代码中完成。
    • 很高兴你解决了。以这种方式影响 userInteractionEnabled 复选框的 IBAction 很奇怪;也许其他事情正在发生。但是,我永远无法找到 Interface Builder 中的所有怪癖。
    • 非常感谢!我正在拔头发,解决方法很简单。
    • 值得一提的是,在 Xcode 7 Interface Builder 中,有两个“启用用户交互”复选框。一个在 Identity Inspector 中(图标看起来像一张 ID 卡),一个在 Attributes Inspector 中(图标是一个五边形,看起来像一个滑块拇指)。您需要检查的是在属性检查器中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-27
    相关资源
    最近更新 更多