gpt4 book ai didi

按下字母时 iOS 搜索栏关闭

转载 作者:行者123 更新时间:2023-11-28 06:28:07 26 4
gpt4 key购买 nike

我在 swift 3 的搜索栏中遇到了这个奇怪的问题。

所以我希望将搜索栏固定在表格 View 的顶部(尽管不将其放入 Storyboard 中)我有以下代码。

    let searchController = UISearchController(searchResultsController: nil)

override func viewDidLoad() {
super.viewDidLoad()



searchController.searchResultsUpdater = self
searchController.dimsBackgroundDuringPresentation = false
definesPresentationContext = true
searchController.searchBar.placeholder = "Search for Event Name or Category"
}


func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
return self.searchController.searchBar
}

func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
return searchController.searchBar.frame.height
}

因此,当我上下滚动表格 View 时,搜索栏确实保留在顶部。当我按下搜索栏输入文本时,它会显示键盘和取消按钮。

如果我按下取消按钮,键盘消失,这是正常的。

但是如果我从键盘上按下某些东西(比如字母 A)它过滤表格 View 并关闭键盘。它也不让我按取消或 (x) 按钮。知道为什么吗?

附言在模拟器中运行良好!但是在我的 iPhone SE 中却在做上面的事情!

最佳答案

删除标题的两个函数,并将这些行添加到您行上方的 viewDidLoad 中。

 searchController.hidesNavigationBarDuringPresentation = false
let tableHeaderView: UIView = UIView.init(frame: searchController.searchBar.frame)
tableHeaderView.addSubview(searchController.searchBar)
self.locationTable.tableHeaderView = tableHeaderView

然后把这个函数也放进去:

func scrollViewDidScroll(_ scrollView: UIScrollView) {
let searchBar:UISearchBar = searchController.searchBar
var searchBarFrame:CGRect = searchBar.frame
if searchController.isActive {

searchBarFrame.origin.y = 0
}
else {
searchBarFrame.origin.y = max(0, scrollView.contentOffset.y + scrollView.contentInset.top)

}
searchController.searchBar.frame = searchBarFrame
}

现在我相信你会得到你想要的结果。

希望对你有帮助

关于按下字母时 iOS 搜索栏关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41198661/

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