gpt4 book ai didi

ios - 使用 UISearchController 显示搜索结果和键盘覆盖 UITableView 中的底部行/部分

转载 作者:行者123 更新时间:2023-11-28 15:44:43 25 4
gpt4 key购买 nike

有一个 UISearchController 在 UITableView 中显示搜索结果,UITableView 根据联系人姓名分为字母部分和相应的行。

当有搜索结果显示几个联系人比显示键盘的 UITableView 大时,底部的行和部分将被键盘覆盖。

在显示过滤后的搜索结果时,增加 UITableView 内容高度的最佳方法是什么,以便底部的联系人可以滚动到用户可见,从而不再被 iOS 键盘覆盖?

我正在使用 Swift 3.1 和 UISearchResultsUpdating 委托(delegate)以及 updateSearchResults 方法来显示过滤后的结果。

最佳答案

当键盘出现/消失时,您需要注意并相应地设置 tableView 的 contentInset

在您的 TableViewController 类中创建两个函数作为键盘事件的响应者:

func keyBoardWillShow(notification: NSNotification) {
if let keyBoardSize = notification.userInfo?[UIKeyboardFrameBeginUserInfoKey] as? CGRect {
let contentInsets = UIEdgeInsets(top: 0, left: 0, bottom: keyBoardSize.height, right: 0)
self.tableView.contentInset = contentInsets
}
}

func keyBoardWillHide(notification: NSNotification) {
self.tableView.contentInset = UIEdgeInsets.zero
}

并在 ViewDidLoaddeinit 中注册/注销响应者:

override func viewDidLoad() {
super.viewDidLoad()
...

// register the responders
NotificationCenter.default.addObserver(self, selector: #selector(self.keyBoardWillShow), name: NSNotification.Name.UIKeyboardWillShow, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(self.keyBoardWillHide), name: NSNotification.Name.UIKeyboardWillHide, object: nil)

}

deinit {
NotificationCenter.default.removeObserver(self)
}

关于ios - 使用 UISearchController 显示搜索结果和键盘覆盖 UITableView 中的底部行/部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43281760/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com