美文网首页
ios11中 navigationbar + uisearchc

ios11中 navigationbar + uisearchc

作者: 陈铖_eea8 | 来源:发表于2019-10-22 21:31 被阅读0次

    我的情况是希望使用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

    各路大神有没有遇到过这个情况,还望指一条明路。

    相关文章

      网友评论

          本文标题:ios11中 navigationbar + uisearchc

          本文链接:https://www.haomeiwen.com/subject/vfucvctx.html