我的情况是希望使用iOS11的新特性largetitle,所以我在appdelegate中设置了全局开启此特性,代码如下:
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
self.window = UIWindow.init(frame: UIScreen.main.bounds)
self.window?.rootViewController = TabBarController.init(nibName: nil, bundle: nil)
self.window?.makeKeyAndVisible()
//全局设置largetitle
if #available(iOS 11.0, *) {
(UINavigationBar.appearance() as UINavigationBar).prefersLargeTitles = true
} else {
// Fallback on earlier versions
}
return true
}
我在主页面中present了一个模态视图,点击button按钮会弹出模态视图,代码如下:
@objc private func presentToSecondPage() {
let secnodPage = SecondPagePage.init(nibName: nil, bundle: nil)
let navi = NavigationController.init(rootViewController: secnodPage)
self.present(navi, animated: true, completion: nil)
}
目前为止一切都很完美。如图:
IMG_1222.GIF
然后我希望在我的模态视图中使用largetitle 特性,同时配合使用uisearchcontroller,所以我在secondpage中写了以下代码:
override func viewDidLoad() {
super.viewDidLoad()
definesPresentationContext = true
self.title = "Title"
self.view.backgroundColor = UIColor.white
if #available(iOS 11.0, *) {
self.navigationItem.searchController = self.searchController
self.navigationItem.hidesSearchBarWhenScrolling = true
}
}
lazy var searchController : UISearchController = {
let searchController = UISearchController.init(searchResultsController: nil)
searchController.hidesNavigationBarDuringPresentation = false
searchController.obscuresBackgroundDuringPresentation = false
searchController.dimsBackgroundDuringPresentation = false
searchController.searchBar.delegate = self
return searchController
}()
此时问题出现了,我在点击搜索框之后,再点击cancle,然后再滑动页面,我发现largetitle重复出现了,如图
48181B0DAE14819A78E000F39C407683.png
上面提到的问题是issue1。还有issue2,issue2应该是伴随着issue1出现的。
issue2可以简单描述为 当出现issue1之后,我再去点击导航栏上的“编辑”按钮和右侧的“加号”按钮,他们两个按钮将不再响应点击事件,debug了一下,这个问题好像是两个按钮上分别多了一个遮罩层,从而导致点击无效。
以上是我现在遇到的两个问题,我的测试环境是:
屏幕快照 2019-10-22 下午9.30.06.png
各路大神有没有遇到过这个情况,还望指一条明路。
网友评论