【问题标题】:Unable to press UIButton underneath NavigationBar?无法按下 NavigationBar 下方的 UIButton?
【发布时间】:2020-10-18 09:31:04
【问题描述】:

我有一个应用程序,其中有一个可以有导航子的导航控制器。我必须在导航栏正常的地方放一个 UIButton。

UIButton 连接到目标:

for button in arrayOfButtons {
    button.addTarget(self, action: #selector(buttonTouchUpInsideP3), for: [.touchUpInside])
    button.addTarget(self, action: #selector(buttonTouchInsideBoundsP3), for: [.touchDown, .touchDragEnter])
    button.addTarget(self, action: #selector(buttonDraggedOutOfBoundsP3), for: [.touchDragExit, .touchCancel]) //there is definitly combining that cud be done here...
}

基本上我不能简单地隐藏导航栏,因为我使用它来调整大小/自动布局,所以我尝试做的是:(此代码在子导航控制器的 ViewDidLoad 中)

self.navigationController?.navigationBar.isUserInteractionEnabled = false

self.navigationController?.navigationBar.setBackgroundImage(UIImage(), for: .default)
self.navigationController?.navigationBar.shadowImage = UIImage()
self.navigationController?.navigationBar.isTranslucent = true

self.navigationItem.hidesBackButton = true

要删除它的 UI 并让它在那里不可见,这部分可以工作......但是,问题是我仍然无法在导航栏区域按任何东西......即使我这样做了isUserInteractionEnabled = false

我该如何解决这个问题!?这样我就可以点击下方的 UIButton(?)或者更确切地说是导航栏所在的位置??

还没有看到为我解决这个问题的 SO 问题:/

【问题讨论】:

  • 导航栏仍然在视图的顶部。阻止它下面的视图被触摸。用户交互只是阻止该视图触发事件并且不允许传递事件。
  • @StonedStudio 我明白了......你对我如何让那些 UIButtons 能够被点击有什么想法吗?
  • 我会尝试设置 .isHidden = true - 而不是尝试使用其他命令隐藏它。 .isHidden 应该在将 firstResponder 状态发送到下一个可用视图时处理所有这些。 - developer.apple.com/documentation/uikit/uiview/1622585-ishidden
  • @StonedStudio 这样做的问题是我不能将导航栏用作自动布局参考...

标签: ios swift uinavigationcontroller uibutton uinavigationbar


【解决方案1】:

好吧,对于任何想知道的人:

@StonedStudio 是对的,我最终只是隐藏了导航栏,而是简单地创建了一个视图,导航栏的边界高度锚定在 view.safeAreaLayoutGuide.topAnchor 的顶部,这样它就形成了将是导航栏,同时也允许点击! :)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-04-15
    • 2020-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多