【问题标题】:uilabel inside a uiview -- adding gesture to the label not owrkinguiview 中的 uilabel - 向标签添加手势不起作用
【发布时间】:2012-05-30 22:20:45
【问题描述】:

我在 uiview 中有一个 uilabel(以及其他标签)。 我添加了一个手势,当点击标签时我会执行一些操作。

该动作不会被触发,但是如果我将标签放在 uiview 之外(意味着它不是 uiview 的子级),它就会正常工作。我将它放回视图中,而不是停止触发动作。

知道为什么吗?

标签在 uiview 内时的某些东西使它对手势没有反应,我不知道为什么(尽管 uiview 和标签都启用了“用户交互”)。

TIA

【问题讨论】:

  • 您在 UIView 或 UIImageView 中添加了标签?也请贴一些代码
  • 为什么不在标签上添加一个透明的自定义按钮来让它工作呢? (假设单击)
  • 确保 userInteractionEnabled 在包含视图上设置为 YES
  • [self.lbltst setUserInteractionEnabled:YES]; [self.resultView setUserInteractionEnabled:YES]; UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self.resultView action:@selector(dispDetail)]; [self.lbltst addGestureRecognizer:tap];以上是代码——标签是lbltst,包含标签的uiview是resultview

标签: iphone objective-c xcode


【解决方案1】:

或者只是没有 UILabel 并且只有按钮的文本可见,这样您就不必有 UILabel 和 UIButton(从内存的角度来看)。

【讨论】:

  • 我不喜欢标签和按钮的想法,而且真的没有必要,因为我可以使用手势挂钩标签来触发事件。唯一的问题是它的工作原理是标签不在另一个容器内,在这种情况下是 UIview。
【解决方案2】:

我认为这里的问题是UILabel 正在接收触摸事件而不是 UIView。尝试将以下代码(当然,修改为适合您的标签)添加到 viewDidLoad 方法:

myLabel.userInteractionEnabled = FALSE;

这应该允许触摸事件传递到 UIView。你为什么做这个?使用UIButton 会不会更容易?

【讨论】:

  • 我希望 uilabel 手势不能在 uiview 中工作,但一旦它在 uiview 内就不会。
【解决方案3】:

显然父控件存在问题,我重新绘制了视图,它工作正常。感谢您的 cmets。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-09
    相关资源
    最近更新 更多