【发布时间】:2015-08-29 15:54:03
【问题描述】:
注意searchBar 放大镜和占位符文本在解雇时是如何移动的:
有没有什么办法可以在不移动文本和图标的情况下关闭这个搜索栏?查看音乐应用的动画,了解我想要实现的动画。
我有一个UISeachBar,当在导航栏中单击搜索按钮时会显示它。
@IBAction func searchButtonPressed(sender: AnyObject) {
searchController = UISearchController(searchResultsController: nil)
searchController.searchResultsUpdater = self
searchController.searchBar.delegate = self
searchController.hidesNavigationBarDuringPresentation = false
searchController.dimsBackgroundDuringPresentation = false
presentViewController(searchController, animated: true, completion: nil)
}
现在,当按下取消按钮时,我希望整个视图向上移动,而不会在视图向上移出屏幕时看到 SearchBar 图标和占位符文本滑动到 searchBar 的中心。
我知道有 searchBarCancelButtonClicked(searchBar:) 方法,但这似乎会自动关闭 SearchBar,我不知道如何控制它。
如何让 SearchBar 像音乐应用中的一样消失?
编辑:这是我使用的唯一委托方法:
func updateSearchResultsForSearchController(searchController: UISearchController) {
masterFilter.removeAll()
filterContentForSearchText(searchController.searchBar.text!)
tableView.reloadData()
}
【问题讨论】:
-
您可以发布您可能添加的任何
UISearchBarDelegate方法吗?如果你打电话给resignFirstResponder,它会触发不需要的动画。 -
您已设置您的
searchBar.delegate。但是您的代码中没有searchBarCancelButtonClicked或其他searchBar 方法?在这一点上,我唯一能解释的是您的项目中的一些额外内容,这些内容是您尝试过的先前方法遗留下来的,这会影响您切换到的新方法。 -
原谅我。我确实有
searchBarCancelButtonClicked,但里面没有代码。我不确定要放什么代码来实现我想要的动画。 -
无。您不应该包含它,甚至不需要设置
searchBar.delegate,因为过滤是由 searchResultsUpdater 处理的。尝试删除searchController.searchBar.delegate = self,因为 Apple 甚至没有在他们的示例中包含它。 -
好的,我删除了那行。回到我原来的问题,这个动画应该怎么实现呢?
标签: ios swift uisearchcontroller