【发布时间】:2019-09-27 12:32:06
【问题描述】:
我有一个导航栏,其中包含一些 UIBarButtonItem 按钮和一个 UISearchBar 像这样连接
var searchController: UISearchController!
override func viewDidLoad() {
super.viewDidLoad()
title = "Test"
tableView.delegate = self
tableView.dataSource = self
searchController = UISearchController(searchResultsController: nil)
navigationItem.searchController = searchController
// This leads to the bug
searchController.hidesNavigationBarDuringPresentation = false
navigationItem.leftBarButtonItem = UIBarButtonItem(barButtonSystemItem: .action, target: self, action: #selector(leftTapped))
navigationItem.rightBarButtonItem = UIBarButtonItem(barButtonSystemItem: .action, target: self, action: #selector(rightTapped))
}
场景:我点击搜索栏,然后点击取消。
-
问题 1:条形按钮对触摸没有反应,除非我触摸屏幕的最外层像素(仅通过模拟器和鼠标点击才有可能)。
问题 2:当我推动另一个视图控制器时,导航项重叠。
当我使用 hidesNavigationBarDuringPresentation = true 时,它会像预期的那样工作。
该问题出现在使用 Xcode 11.0 和 11.1 的缺口和非缺口 iPhone iOS 13.0 和 13.1 上。
这是整个测试项目: https://github.com/fl034/HidesNavigationBarDuringPresentationTest
我已经提交了一份雷达文件(你也应该提交),但也许你们中的一些人已经有了解决方法?
更新 1:iOS 13.1.1 中仍然存在错误
更新 2:在 iOS 13.2 测试版中修复了错误(感谢 @Ben Gomm)
【问题讨论】:
-
我也注意到了这一点 - 必须将
hidesNavigationBarDuringPresentation设为 true 以避免此错误,但这不是我想要的外观。我认为这是一个错误。启用大标题后,取消搜索栏似乎会出现第二个大标题,该标题不会随滚动视图的其余部分一起滚动。 -
非常不错的演示,但您应该消除所有对演示错误而言不必要的内容。您不需要标签栏控制器。您不需要栏按钮项目!只需点击表格行进行导航就足以表明导航栏已损坏。
-
同意。除了我需要条形按钮来证明条形按钮不再可点击。
-
在 iOS 13.1.2 上仍然损坏
-
我遇到了同样的问题,但我不能将 hidesNavigationBarDuringPresentation 设置为 true,因为当 UISearchBar 是第一响应者时,我仍然需要显示条形按钮
标签: ios uinavigationcontroller uisearchcontroller ios13