带导航栏的搜索控制器

Posted

技术标签:

【中文标题】带导航栏的搜索控制器【英文标题】:Search controller with navigation bar 【发布时间】:2016-10-06 10:50:34 【问题描述】:

我有 .hidesBarOnSwipe = true 的导航控制器。 同样,当我执行搜索时,我的导航控制器会上升并隐藏(默认情况下应该如此)。

但是,如果我尝试搜索某些内容,然后按 (x) 清除我已经编写的内容,我的导航栏会与搜索栏重叠,但第二个仍然处于活动状态,我可以编写一些内容并执行搜索。

所以问题是如何找到当我点击搜索栏上的 (x) 按钮时调用的方法。

当我的搜索栏仍然处于活动状态时,我怎样才能让我的导航栏被固定和隐藏,因为如果它仍然处于活动状态,我可以向下滑动,我的导航栏会再次与搜索栏重叠?

谢谢!

【问题讨论】:

【参考方案1】:

你可以得到这个X按下的功能

 func searchBar(searchBar: UISearchBar, textDidChange searchText: String) 
    if searchText == "" 
        print("SearchBar text cleared!")
        // do something whatever you need
    

或使用

func textFieldShouldClear(textField: UITextField) -> Bool 

 // do something here
return true

Swift3

func textFieldShouldClear(_ textField: UITextField) -> Bool 
// do something here
return true

或者使用这个

func searchBarTextDidBeginEditing(searchBar: UISearchBar) 
if (searchBar.text == "") 
    //Clear stuff here


有关更多信息,您可以从here获取样本

【讨论】:

谢谢。但是当我刚刚点击搜索字段时,导航控制器仍然可以覆盖它。您的方法表明,只有在搜索字段不是从头开始获取“”后,我才能更改导航控制器的属性。 在开始时调用 textFieldShouldClear 方法 谢谢!我错过了你上次提到的那个方法。这在 ...DidEndEditing 对中起到了作用! @wm.p1us - 没问题,小错误就是这样 谢谢。它也帮助了我

以上是关于带导航栏的搜索控制器的主要内容,如果未能解决你的问题,请参考以下文章

Swift - 使用UISearchController实现带搜索栏的表格

带搜索栏跳转的导航控制器

在整个应用程序中添加带有搜索栏的半透明背景视图控制器

在 Swift 3.0 中实现滑动以在没有导航栏的情况下向后导航

iOS 7 导航栏中的搜索栏

将带有可见导航栏的视图控制器弹出到带有隐藏导航栏的视图控制器时,带有 interactivePopGestureRecognizer 的黑色区域