【发布时间】: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