我在iOS 7中使用UISearchDisplayController
时会遇到一些奇怪的行为(仅供参考:我碰巧在iOS 7上开发,但我没有在任何其他版本上测试过它。)
设定:
UIViewController
(链接到UINavigationController
),其中包含:
UINavigationItem
的{li> 1 UINavigationController
,右侧的UIBarButtonItem
搜索按钮连接到showSearchbar
方法UINavigationItem
UISegmentedControl
UITableView
,其UISearchDisplayController
被拖放到标题ViewDidLoad
,我添加了self.tableView.contentOffset = CGPointMake(0, 44);
-(IBAction)showSearchbar{ [self.searchDisplayController setActive:YES animated:YES]; }
综上所述,我加载视图后,UISearchBar
隐藏在UINavigationItem
+ UISegmentedControl
(上面的1.2)后面 - 这是预期的和预期的。
但是,我看到了两种不同的行为:
UITableView
,直到UISearchBar
显示,我点击UITextField
中的UISearchBar
或点击搜索按钮(上面的1.1) ,显示UISearchDisplayController
。发生这种情况时,我的UINavigationItem
都会从屏幕上移开,UITextField
缩短,并显示“取消”文本按钮。单击“取消”按钮时,UISearchDisplayController
将被取消激活 - 这是预期的。 UITableView
以显示UISearchBar
,然后点击搜索按钮以显示UISearchDisplayController
,当我点击取消按钮,它不起作用。相反,就好像UITextField
被触及一样。我已尝试将showSearchbar
方法更改为[self.searchBar becomeFirstResponder];
,但这不会改变任何内容。
在第二种行为中,当UISearchDisplayController
处于活动状态时,看起来好像取消按钮甚至不存在(就像UISearchBar
的状态一样,它仍在{{1}上}})。
有关如何使取消按钮有效的任何想法?