如果单击 UISearchBar,则更改 UITableView 位置:[使用 ModernSearchBar]
Posted
技术标签:
【中文标题】如果单击 UISearchBar,则更改 UITableView 位置:[使用 ModernSearchBar]【英文标题】:Change UITableView position if UISearchBar is clicked: [using ModernSearchBar] 【发布时间】:2018-05-23 23:04:26 【问题描述】:免责声明:我对 Swift 相当陌生,并且来自非开发人员背景 - 所以在我解释这个问题时请多多包涵。我正在使用 Swift 4、Xcode 9
我需要在我的应用程序中使用的 UISearchBar
上具有自动建议功能 - 为此我使用了 ModernSearchBar 库。它对我来说一直很好,但最近我编辑了我的UISearchBar
代码,以便它移动到页面顶部,并且用户可以使用更大的区域来查看其中的建议。但我目前面临this issue - 所以虽然UISearchBar
按预期上升,但建议列表没有。我知道这个问题对于这个库来说是非常具体的,但如果有人指出我正确的方向,我将不胜感激。
ModernSearchBar 本身是对应用程序的一个非常简洁的补充,如果可能的话,我想保留它。但是请告诉我是否应该考虑放弃它并自己构建 UI。
【问题讨论】:
当点击搜索栏时,您必须更改 tableview 顶部的约束。 所以我在编辑库时注意到了一些东西。如果我在UISearchBar
内部点击一次(然后它向上移动),然后在其外部点击一次,然后在内部再次点击(UISearchBar
仍然在顶部)-UITableView
的位置会自行更新。所以UISearchBar
的位置偏移第一次没有被检测到,但它在第二次点击时。也许我应该研究一下searchBarTextDidBeginEditing
函数?
是否在工作约束基础?如果是,那么您需要为父视图设置layOutIfNeeded()。
【参考方案1】:
因此找到了一个相对简单的解决方案——库中的文件ModernSearchBar.swift
有一个名为configureViews()
的函数,它设置UITableView
的属性(即建议列表)。我编辑了searchBar(_ searchBar: UISearchBar, textDidChange searchText: String)
函数并将这一行if self.suggestionsView.frame.height == 0.0 self.configureViews()
添加到其中。这有效,即建议列表视图也按预期更新到UISearchBar
的顶部位置。由于框架高度限制,它也不会多次更新位置。
更新:
我遇到的另一个问题是,如果我搜索一个单词并返回到上一页,搜索结果视图每次都会略微向上移动并开始覆盖UISearchBar
部分,然后退出视图。在我删除代码以更新同一文件中keyboardWillShow(notification: NSNotification)
函数中的建议列表大小后,问题得到解决。不确定原因,但现在它在手机和模拟器上都可以正常工作。
【讨论】:
以上是关于如果单击 UISearchBar,则更改 UITableView 位置:[使用 ModernSearchBar]的主要内容,如果未能解决你的问题,请参考以下文章
单击 UISearchBar 的取消按钮后,如何使用 UISearchBar 刷新我的 UITableView?
如何在iOS 7中更改文本UISearchBar的取消按钮颜色?