2014-10-30 81 views
4

我有一个UIViewControllerUITableViewUISearchBar里面。只要搜索栏成为第一响应者,搜索栏和桌面视图之间就会有一个小小的差距。UIViewController与UITableView和UISearchBar间隙问题

Initial stateSearchbar becomes first responder

有没有间隙,当UISearchBarUIViewController视图而不是被UITableView的子视图的子视图。

Initial stateSearchbar becomes first responder

显然,有一个问题与方法是搜索栏贴到顶部,不随其他细胞,这是不希望滚动。

任何想法?

编辑:

两个第一图像对应于UISearchBar作为UITableView,其中的间隙发生的子级。

最后两张图片对应UISearchBarUIViewController视图的子视图,在这种情况下没有任何间隙。

+0

你能否让它多一点清楚哪个配置连接到每一个形象的例子? – andrewbuilder 2014-10-30 00:18:41

+0

完成。你有什么想法可以造成这种差距? – plgrenier 2014-10-30 00:28:07

+0

查看答案...有帮助吗? – andrewbuilder 2014-10-30 00:55:59

回答

5

UINavigationBar半透明属性设置为NO时发生差距。将其设置为YES可以解决问题。动画再次平滑,UISearchBarUITableView之间没有差距。我无法解释为什么,并且这似乎是Apple方面的一个错误,因为通过创建示例项目很容易进行重现。

+1

3年以及许多Xcode/iOS版本后...这仍然是一个问题,并且此修复仍然有效。 – 2017-05-25 22:24:36

+0

我是'true' /'YES'并将它设置为'false' /'NO'修复它 – 2017-10-01 02:13:43

0

没有看到代码就有点困难,但也许尝试将uisearchbar设置为uitableview的标题视图,而不是将其添加为子视图。

0

我怀疑这可能与UITableView和使用UITableViewController这个事实有关,您可以将整个表格视图和搜索栏向下拉动以显示背后的空间。

当你插入UISearchBarUITableViewUIView的“下拉” UI是不会继承的(因为它是唯一的UITableViewController),这样的“下拉”空间“提示”是不存在的。

要检查此问题并希望能够解决您的问题,请通过执行UITableView属性setBackgroundViewsetBackgroundColor来阅读我对此前SO question的回答。

+1

差距仍然在这里,但黑色。间隙大小似乎等于状态栏。 – plgrenier 2014-10-30 01:35:08

0

我有完全相同的问题,但没有上述解决方案的工作。根据@plgrenier的回答,状态栏的半透明性导致了这个问题。我处理这个

一个办法是使用搜索代表切换半透明:

#pragma mark - Table Search Delegates 
- (void) searchBarTextDidBeginEditing:(UISearchBar *)searchBar{ 
     [self.navigationController.navigationBar setTranslucent:YES]; 
} 
-(void) searchBarTextDidEndEditing:(UISearchBar *)searchBar{ 
    [self.navigationController.navigationBar setTranslucent:NO]; 
} 
相关问题