在取消按钮被调用后,将UISearchBar隐藏在UINavigationBar下方。

5

通常我使用[self.tableView setContentOffset:CGPointMake(0,40)];来隐藏作为tableView头部的UISearchBar,使其位于navigationBar下方。在viewDidLoad中一切正常:当视图加载时,searchBar位于navigationBar下方。然后我将相同的代码行放入了

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

- (void)searchDisplayControllerWillEndSearch:(UISearchDisplayController *)controller

但它却做了一些奇怪的事情:当点击取消按钮时,搜索栏仍然可见。这是什么问题?

2个回答

4
以下方法可以解决这个问题:
-(void)searchDisplayControllerDidEndSearch:(UISearchDisplayController *)controller{
    [self.tableView setContentOffset:CGPointMake(0,40)];    
}

确保将UISearchBar添加到tableview中。只有这样,contentOffset的概念才能起作用。 - Abdul Yasin

1

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

- (void)searchDisplayControllerWillEndSearch:(UISearchDisplayController *)controller

你可以这样检查:
if ([NSThread isMainThread]) {
    NSLog(@"Yes it is the main thread.");
}

否则,任何视图更改都不会在屏幕上注册。如果您必须从单独的线程修改视图,则可以使用以下方法:
[self performSelectorOnMainThread:@selector(XXX) withObject:nil waitUntilDone:NO];

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接