UISearchBar对于iOS中的搜索功能来说是非常有用的,一般来说它和UISearchController配合来用简直美美哒 ;)
通常SearchBar是放在UITableView的头部,但也不尽然。
对于我的需求来说我把它放到了UITableView的第一个Cell里:
func setupSearchController(){
//custom Search Results Controller
let folderSearchVC = FolderSearchViewController()
searchController = UISearchController(searchResultsController: folderSearchVC)
//cancel hide NavigationBar
searchController.hidesNavigationBarDuringPresentation = false
searchController.searchResultsUpdater = folderSearchVC
searchBar = searchController.searchBar
searchBar.placeholder = "搜索习惯组"
//放到第一个Cell里
firstCell.contentView.addSubview(searchBar)
}
但是在第一次搜索的时候,其中的placeholder内容总会顽皮的略微向上跳一下,真是让我欢喜让我忧:
如上图!注意,这个问题只在第一次点击SearchBar时会出现,随后都正常!
虽说这只是一个小的“瑕疵”(这取决你怎么看,你可能认为这很活泼,很好…),但拥有强迫症天猫座的我怎能忍受…
解决起来很简单,只要关闭显示cancel按钮的动画即可:
func searchBarShouldBeginEditing(_ searchBar: UISearchBar) -> Bool {
//消除第一次点击搜索bar,其中placeholder文字发生向上跳动的情况
searchBar.setShowsCancelButton(true, animated: false)
return true
}
That’s All OK ;)