在cancelButton被调用后隐藏UINavigationBar下面的UISearchBar

我通常使用[self.tableView setContentOffset:CGPointMake(0,40)]; 为了隐藏导航条下方的UISearchBar(我设置为tableView的标题)。 在viewDidLoad中一切正常:当视图加载时,searchBar在导航栏下方。 然后我放了相同的代码行

[self.tableView setContentOffset:CGPointMake(0,40)]

- (void)searchDisplayControllerWillEndSearch:(UISearchDisplayController *)controller

但它执行任何操作:单击取消按钮时,searchBar保持可见状态。 怎么了?


以下方法应该这样做:

-(void)searchDisplayControllerDidEndSearch:(UISearchDisplayController *)controller{
    [self.tableView setContentOffset:CGPointMake(0,40)];    
}

下面的方法是从主线程调用的吗?

- (void)searchDisplayControllerWillEndSearch:(UISearchDisplayController *)controller

你可以这样检查:

if ([NSThread isMainThread]) {
    NSLog(@"Yes it is the main thread.");
}

否则,任何视图更改都不会在屏幕上注册。 如果你必须从一个单独的线程修改视图,你可以使用这个:

[self performSelectorOnMainThread:@selector(XXX) withObject:nil waitUntilDone:NO];

我不确定这是你的问题,但这是我开始寻找的地方。

链接地址: http://www.djcxy.com/p/44269.html

上一篇: hide UISearchBar below UINavigationBar after cancelButton was called

下一篇: Hide keyboard when losing focus off UISearchBar