iphone - ( iphone/ios ) UISearchBar范围按钮覆盖UITableView的第一行

  显示原文与译文双语对照的内容
0 0

我知道这个问题已经被问过,但是我还没有找到 true 解决方案。 每当范围按钮出现时,我都有一个 UITableViewUISearchBar 作为它的tableHeaderView.,它们覆盖了 UITableView的第一行。

在用户点击按钮的高度之前,我尝试使用 UITableView.contentOffset 来偏移 UITableView,这样直到用户点击 UITableView 或者滚动它,这时 UITableView 会回到原来的偏移。

我能做的最好的事情是在视图中设置 UISearchBar,然后动态调整 UITableView 以显示或者隐藏搜索按钮。 唯一的问题是没有动画,所以转换是很清晰的。

更新:我通过实现 UISearchDisplayController 解决了这个问题,因为这是最干净最简单的解决方案。 UISearchDisplayController 自动显示/隐藏范围按钮并相应地向下移动 UITableView 。 i的原因是,我希望 UITableView 不会在最初被 UISearchDisplayController,而不是因为我意识到中断不会妨碍任何功能;用户也不会启动搜索,如果他想继续寻找它的最佳状态。

时间: 原作者:

0 0

想法:

  • 在将 tableHeaderView 设为它的时将它的设置为 UIView,然后在显示范围按钮时调整该 UIView的大小。 UITableView 希望对该视图做出响应,改变它的框架。

  • UISearchBar 设置为 UITableView的第一个单元格的内容,并使用 (void)reloadRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation 当范围按钮隐藏或者显示时。 返回适当的高度以使单元格具有它的新高度。

或者你可以使用描述( 。UISearchBar 作为视图中的单独项)的方法,并使用动画块来动画转换,使它的更少。


[UIView animateWithDuration:1.0 animations:^
 {
//change table view frame here
 }];

原作者:
...