在 iOS 7 中使用 a 时出现了一些奇怪的行为UISearchDisplayController(仅供参考:我碰巧在 iOS 7 上进行开发,但尚未在任何其他版本上对其进行测试)。
设置:
UIViewController(链接到 aUINavigationController),它具有:- 1
UINavigationItem来自父级,右侧UINavigationController有一个搜索按钮连接到一个方法UIBarButtonItemshowSearchbar - 一个额外的
UINavigationItem权利低于持有一个UISegmentedControl - 1拖放到其
UITableView标题UISearchDisplayController - 在
ViewDidLoad中,我添加了self.tableView.contentOffset = CGPointMake(0, 44);
- 1
-(IBAction)showSearchbar{ [self.searchDisplayController setActive:YES animated:YES]; }
有了以上所有内容,一旦我加载视图,它UISearchBar就会隐藏在我的UINavigationItem+后面UISegmentedControl(上面的 1.2) - 这是预期的和预期的。
但是,我看到了 2 种不同的行为:
- 如果我向下拖动
UITableView直到UISearchBar显示 ,然后单击或单击搜索按钮(UITextField在UISearchBar上面的 1.1 中),UISearchDisplayController就会显示。发生这种情况时,我的两个UINavigationItems 都会从屏幕上移开,UITextField缩短,并出现一个取消文本按钮。当我单击取消按钮时,它UISearchDisplayController会被停用 - 这是预期的。 - 但是,如果我在单击搜索按钮以显示 之前不拖动
UITableView来显示,那么当我单击取消按钮时,它就不起作用了。相反,就好像被触动了一样。UISearchBarUISearchDisplayControllerUITextField
我尝试将我的showSearchbar方法更改为[self.searchBar becomeFirstResponder];,但这并没有改变任何东西。
在第二种行为中,当 处于UISearchDisplayController活动状态时,它看起来好像取消按钮甚至不存在(就像UISearchBar它仍然在 上时的状态一样UITableView)。
关于如何使“取消”按钮起作用的任何想法?