繁体   English   中英

Swift UISearchController tableview 搜索结果滚动不在键盘上方移动到最后一行

[英]Swift UISearchController tableview search result scroll not moving above keyboard upto last row

在我的场景中,我将Tableview与 searchController 结合使用。 单击搜索按钮后将显示搜索searchcontroller 在这里,一旦通过搜索结果列表时间搜索控制器,如果我滚动我的 tableview,它不会滚动到底部的最后一个“行”。 我需要在keyboard上方显示底行。 我尝试了下面的代码但没有工作。

单击按钮以显示搜索控制器

@IBAction func Click_search(_ sender: Any) {
        searchController = UISearchController(searchResultsController: nil)
        searchController.hidesNavigationBarDuringPresentation = false
        searchController.searchBar.keyboardType = UIKeyboardType.asciiCapable
        searchController.searchBar.placeholder = "Search"
         searchController.searchBar.backgroundColor =  UIColor.red
        searchController.searchBar.tintColor =  UIColor.white
        let cancelButtonAttributes = [NSAttributedString.Key.foregroundColor: UIColor.white]
        UIBarButtonItem.appearance().setTitleTextAttributes(cancelButtonAttributes , for: .normal)
        searchController.dimsBackgroundDuringPresentation = false
        self.searchController.searchBar.delegate = self
        searchController.searchResultsUpdater = self
        present(searchController, animated: true, completion: nil)
    }

内部视图下载

  NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillShow(notification:)), name: UIResponder.keyboardWillShowNotification, object: nil)
        NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillHide(notification:)), name: UIResponder.keyboardWillHideNotification, object: nil)

键盘隐藏和显示调整 Tablview 高度

@objc private func keyboardWillShow(notification: NSNotification) {
        if let keyboardSize = (notification.userInfo?[UIResponder.keyboardFrameBeginUserInfoKey] as? NSValue)?.cgRectValue {
            tableView.contentInset = UIEdgeInsets(top: 0, left: 0, bottom: keyboardSize.height + 25, right: 0)
        }
    }

    @objc private func keyboardWillHide(notification: NSNotification) {
        tableView.contentInset = .zero
    }

试试这段代码。 您正在滚动 TableView。 请尝试滚动您的超级视图。 它会工作。 试着让我知道。

在 Click_search 操作中添加以下代码。

NotificationCenter.default.addObserver(self, selector: #selector(self.keyboard(notification:)), name: UIResponder.keyboardWillShowNotification, object: nil)
        NotificationCenter.default.addObserver(self, selector: #selector(self.keyboard(notification:)), name: UIResponder.keyboardWillHideNotification, object: nil)
        NotificationCenter.default.addObserver(self, selector: #selector(self.keyboard(notification:)), name:UIResponder.keyboardWillChangeFrameNotification, object: nil)

调用这个函数来检查和滚动你的 tableView To Up。 //MARK:- 键盘检查

 @objc func keyboard(notification:Notification) {
        if notification.name == UIResponder.keyboardWillShowNotification ||  notification.name == UIResponder.keyboardWillChangeFrameNotification {
           self.view.frame.origin.y = -15
        }else{
            self.view.frame.origin.y = 0
        }
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM