gpt4 book ai didi

swift - navigationController?.navigationBar.isUserInteractionEnabled 没有按预期工作

转载 作者:行者123 更新时间:2023-11-28 14:52:01 24 4
gpt4 key购买 nike

对于以下 viewController 层次结构,isUserInteractionEnabled 似乎没有按预期工作。

NavigationController(ViewController A) --- 推送到 ---> NavigationController(ViewController B)

在 ViewController A 的 viewDidAppear 方法中,我将 navigationController?.navigationBar.isUserInteractionEnabled 设置为 false,并在 ViewController B 的 viewDidAppear 方法中将其设置为 true。但是,在弹出 ViewController B 并返回到 ViewController A 时,导航栏仍然为用户交互启用。非常感谢任何关于为什么会发生这种情况的想法,提前致谢!

最佳答案

这似乎是一个错误,您可以通过在主线程上执行此操作来解决:

override func viewDidAppear(_ animated: Bool) {
//...
DispatchQueue.main.async {
self.navigationController?.navigationBar.isUserInteractionEnabled = false
}
}

但这仍然会留下一个毫秒窗口,其中启用了 navigationBar 的交互。
你必须非常快。


然而...

我不会推荐你在做什么;即禁用 navigationBar
您可能会失去 back 功能(如果它有的话),因为您只是完全禁用了 navigationBar

建议:

由于导航堆栈中的每个 viewController 都有它自己的 navigationItem,其中包含它自己的一组 barButtonItems,我建议您保留引用UIBarButtonItem 并显式启用/禁用它们。

@IBOutlet var myBarButtonItem: UIBarButtonItem!

override func viewDidAppear(_ animated: Bool) {
//...
myBarButtonItem.isEnabled = false
}

此外,这个 barButtonItem 的状态是在这个 viewController 本身中处理的,你不需要做像 self.navigationController?.navigationBar.isUserInteractionEnabled = true 这样的事情 别处。

关于swift - navigationController?.navigationBar.isUserInteractionEnabled 没有按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49788071/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com