在我的情况下,我将Tableview
与searchController一起使用。单击搜索按钮后将显示searchcontroller
。在这里,一旦搜索结果显示时间到了搜索控制器,如果我滚动表格视图,它就不会滚动到底部的最后一个“行”。我需要在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)
}
Inside ViewDidload
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。// 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
}
}