在 UITableView 中激活时调整 UISearchBar

Posted

技术标签:

【中文标题】在 UITableView 中激活时调整 UISearchBar【英文标题】:Adjust UISearchBar when becoming active in a UITableView 【发布时间】:2013-06-30 14:36:57 【问题描述】:

viewForHeaderInSection 设置为UISearchBarsection = 0,以便将它放在我的UITableView 的顶部;我希望在它活跃时发生疯狂的事情。因此,我想当 UISearchBar 处于非活动状态时,我希望该部分有 0 行,然后在它处于活动状态时根据我想要的进行调整。

所以我有

- (void)searchBarTextDidBeginEditing:(UISearchBar *)searchBar 
    [self.tableView reloadSections:[NSIndexSet indexSetWithIndex:0] withRowAnimation:UITableViewRowAnimationAutomatic];

但是随后我的表格重新加载了该部分,并且我丢失了搜索栏的 firstResponder。如果我按照之前的代码 sn-p 使用[self.searchBar becomeFirstResponder] 那么我的问题仍然没有解决,我想可能是因为动画属性。

解决此类问题的性感方法是什么?我应该改用tableView:reloadRowsAtIndexPaths 吗?这似乎有点太勉强了。一定有更好的办法。

我猜我不是第一个想做这种事情的人。

【问题讨论】:

【参考方案1】:

我一直将搜索栏添加为 UITableView 的子视图,而不是标题视图,因此它们的功能独立于表格,因此重新加载行不会影响搜索栏。

【讨论】:

你如何确保它在定位和scolling方面运作良好? in viewDidLoad 我将搜索栏设置为隐藏,与[myTable setContentOffset:CGPointMake(0.0, self.searchBar.frame.size.height) animated:NO]; 一起隐藏起来,除此之外,只要他们滚动到顶部,它就会出现在顶部。如果您希望它始终可见,您可能需要将其添加到 tableView 之外。 谢谢。我会在几个小时内尝试一下。

以上是关于在 UITableView 中激活时调整 UISearchBar的主要内容,如果未能解决你的问题,请参考以下文章

选择时调整单元格大小时出现 NSAutoResizingMaskLayoutConstraint 错误

使用自动布局在屏幕更改时调整自定义单元格中的 UIButton 字体

旋转 UITableView 时更新 UITableViewCells 的问题

SVG 仅在 Safari 中悬停时调整大小

在 iphone 应用程序中使用 UIRotationGestureRecognizer 旋转时调整图像大小

自动布局视图在交互时调整大小