Swift UISearchController tableview 搜索结果滚动不会在键盘上方移动到最后一行
Posted
技术标签:
【中文标题】Swift UISearchController tableview 搜索结果滚动不会在键盘上方移动到最后一行【英文标题】:Swift UISearchController tableview search result scroll not moving above keyboard upto last row 【发布时间】:2019-11-28 10:57:40 【问题描述】:在我的场景中,我将 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)
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
【问题讨论】:
【参考方案1】:试试这个代码。 您正在滚动 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
【讨论】:
以上是关于Swift UISearchController tableview 搜索结果滚动不会在键盘上方移动到最后一行的主要内容,如果未能解决你的问题,请参考以下文章
Swift - 如何摆脱 UISearchController 中的这种深色背景?
过滤后的 didSelectRowAtIndexPath 索引路径 UISearchController - Swift
Swift 中的 UiSearchController 到 UiCollectionView
Swift Firebase UISearchController 索引超出范围