【问题标题】:UIButton and Labels in Navigation Bar Title View in Storyboard故事板中导航栏标题视图中的 UIButton 和标签
【发布时间】:2019-01-08 06:01:56
【问题描述】:

我在导航标题栏中添加了几个标签和一张图片。这一切都很好。但我想用UIButton 覆盖所有这些,但我无法让UIButton 注册任何水龙头。

这是我的视图层次结构的样子:

所有内容都启用了用户交互,我有一个IBAction 连接到 Button,如下所示:

@IBAction func tapProjectEdit(_ sender: UIButton) {
  print("This never fires. :(")
}

我不允许在导航栏中有UIButton 吗?还有其他方法可以解决这个问题吗?

【问题讨论】:

  • 您是否尝试以编程方式(而不是按钮)在 titleView 上添加 UITapGestureRecognizer?
  • 这是个好主意。我刚刚试了一下,它仍然没有注册任何水龙头。
  • 如果我这样设置视图:self.navigationItem.titleView = buttonProjectEdit 水龙头工作(IBActionUITapGestureRecognizer),但随后它会删除我的标签,只显示按钮。跨度>
  • 您能分享一下您是如何创建 TapGesture 的代码吗?
  • 给你:d.pr/n/3BwMAJ

标签: ios uibutton uinavigationbar uistoryboard uinavigationitem


【解决方案1】:

我终于想通了。我怀疑UIButton(以及视图中的所有其他内容)没有实际大小,因为导航子视图总是有点滑稽。

所以我将UIView 子类化,将该类设置为View,并添加以下内容:

class FancyTitleView: UIView{
  override var intrinsicContentSize: CGSize {
    return UILayoutFittingExpandedSize
  }
}

现在它可以使用常规的IBAction(不需要手势识别器)。

这篇文章帮助我发现了这一点:custom titleView of navigationItem is not getting tapped on iOS 11

【讨论】:

  • 是的,它也适用于我的情况。 https://stackoverflow.com/questions/46461350/custom-titleview-of-navigationitem-is-not-getting-tapped-on-ios-11/63241514#63241514
  • 很干净!谢谢?
猜你喜欢
  • 2013-12-02
  • 2014-06-26
  • 2012-10-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-28
  • 2014-06-01
  • 2020-11-04
相关资源
最近更新 更多