在 UISearchController 中按取消后导航栏被阻塞
Navigation bar gets blocked after pressing Cancel in UISearchController
我正在为 iOS 13 准备应用程序,发现导航栏中的搜索控制器存在错误。如何解决导航栏故障?
let search = UISearchController(searchResultsController: nil)
search.dimsBackgroundDuringPresentation = false
search.searchResultsUpdater = self
search.hidesNavigationBarDuringPresentation = false
self.definesPresentationContext = true
search.searchBar.isTranslucent = false
self.navigationItem.searchController = search
self.navigationItem.hidesSearchBarWhenScrolling = true
按“取消”,导航栏项目变得不可触摸。
推送视图控制器导致导航栏项目重叠。
我已经在 git https://github.com/eKroman/TESTsearchBar
上创建了测试项目
错误出现在 iOS 13 beta(在 iPad 上测试)使用从 Xcode 11 从 beta 7(可能是旧 beta)到 Xcode 11 GM seed 2 .
不出现在模拟器上。
我遇到了同样的问题,如果我取消searchBar并更改navigationItem.title那么我有一个双标题。就像导航栏的幽灵层留在导航控制器中。
我是这样修复的:
searchController.hidesNavigationBarDuringPresentation = true
在 Apple 解决此问题之前最好使用它。
我还注意到后退按钮切换为默认颜色(蓝色),就好像导航栏 TintColor 已重置一样。
配置:
- Xcode 11.0 (11A420a)
- iOS 13.1 (17A5844a)
对于@CoachThys 的回答中的后退按钮重置为默认颜色(蓝色),我设法通过下面的代码解决了这个问题。
if #available(iOS 13.0, *) {
let appearance = UINavigationBarAppearance()
/* .. set other things on appearances */
appearance.buttonAppearance.normal.titleTextAttributes = [.foregroundColor: color]
standardAppearance = appearance
compactAppearance = appearance
scrollEdgeAppearance = appearance
}
但是,我找不到解决后退指示器图像的方法,它仍然短暂地重置为蓝色。
添加带有图像的自定义后退按钮将修复新错误。对我来说效果很好。
let negativeSpacer = UIBarButtonItem(barButtonSystemItem: .fixedSpace, target: nil, action: nil)
negativeSpacer.width = -8
self.navigationItem.leftBarButtonItems = [negativeSpacer, leftBarButtonItem]
我正在为 iOS 13 准备应用程序,发现导航栏中的搜索控制器存在错误。如何解决导航栏故障?
let search = UISearchController(searchResultsController: nil)
search.dimsBackgroundDuringPresentation = false
search.searchResultsUpdater = self
search.hidesNavigationBarDuringPresentation = false
self.definesPresentationContext = true
search.searchBar.isTranslucent = false
self.navigationItem.searchController = search
self.navigationItem.hidesSearchBarWhenScrolling = true
按“取消”,导航栏项目变得不可触摸。 推送视图控制器导致导航栏项目重叠。
我已经在 git https://github.com/eKroman/TESTsearchBar
上创建了测试项目错误出现在 iOS 13 beta(在 iPad 上测试)使用从 Xcode 11 从 beta 7(可能是旧 beta)到 Xcode 11 GM seed 2 . 不出现在模拟器上。
我遇到了同样的问题,如果我取消searchBar并更改navigationItem.title那么我有一个双标题。就像导航栏的幽灵层留在导航控制器中。
我是这样修复的:
searchController.hidesNavigationBarDuringPresentation = true
在 Apple 解决此问题之前最好使用它。
我还注意到后退按钮切换为默认颜色(蓝色),就好像导航栏 TintColor 已重置一样。
配置: - Xcode 11.0 (11A420a) - iOS 13.1 (17A5844a)
对于@CoachThys 的回答中的后退按钮重置为默认颜色(蓝色),我设法通过下面的代码解决了这个问题。
if #available(iOS 13.0, *) {
let appearance = UINavigationBarAppearance()
/* .. set other things on appearances */
appearance.buttonAppearance.normal.titleTextAttributes = [.foregroundColor: color]
standardAppearance = appearance
compactAppearance = appearance
scrollEdgeAppearance = appearance
}
但是,我找不到解决后退指示器图像的方法,它仍然短暂地重置为蓝色。
添加带有图像的自定义后退按钮将修复新错误。对我来说效果很好。
let negativeSpacer = UIBarButtonItem(barButtonSystemItem: .fixedSpace, target: nil, action: nil)
negativeSpacer.width = -8
self.navigationItem.leftBarButtonItems = [negativeSpacer, leftBarButtonItem]