4

在 iOS 7 中使用 a 时出现了一些奇怪的行为UISearchDisplayController(仅供参考:我碰巧在 iOS 7 上进行开发,但尚未在任何其他版本上对其进行测试)。

设置:

  1. UIViewController(链接到 a UINavigationController),它具有:
    1. 1UINavigationItem来自父级,右侧UINavigationController有一个搜索按钮连接到一个方法UIBarButtonItemshowSearchbar
    2. 一个额外的UINavigationItem权利低于持有一个UISegmentedControl
    3. 1拖放到其UITableView标题UISearchDisplayController
    4. ViewDidLoad中,我添加了self.tableView.contentOffset = CGPointMake(0, 44);
  2. -(IBAction)showSearchbar{ [self.searchDisplayController setActive:YES animated:YES]; }

有了以上所有内容,一旦我加载视图,它UISearchBar就会隐藏在我的UINavigationItem+后面UISegmentedControl(上面的 1.2) - 这是预期的和预期的。

但是,我看到了 2 种不同的行为:

  1. 如果我向下拖动UITableView直到UISearchBar显示 ,然后单击或单击搜索按钮(UITextFieldUISearchBar上面的 1.1 中),UISearchDisplayController就会显示。发生这种情况时,我的两个UINavigationItems 都会从屏幕上移开,UITextField缩短,并出现一个取消文本按钮。当我单击取消按钮时,它UISearchDisplayController会被停用 - 这是预期的。
  2. 但是,如果我在单击搜索按钮以显示 之前拖动UITableView来显示,那么当我单击取消按钮时,它就不起作用了。相反,就好像被触动了一样。UISearchBarUISearchDisplayControllerUITextField

我尝试将我的showSearchbar方法更改为[self.searchBar becomeFirstResponder];,但这并没有改变任何东西。

在第二种行为中,当 处于UISearchDisplayController活动状态时,它看起来好像取消按钮甚至不存在(就像UISearchBar它仍然在 上时的状态一样UITableView)。

关于如何使“取消”按钮起作用的任何想法?

4

0 回答 0