3

我的应用程序中有一个UITableViewinside a UIViewinside a UIViewController

在上面UITableView,我有一个UISearchBar过滤器UITableView。我不想使用传统UISearchBar的,因为它是一个非常定制的应用程序。

我正在订阅键盘何时出现和消失的通知,并UITableView相应地调整大小。我遇到的问题是,只要我搜索并过滤UITableView,我就会调用:

[self.tableView reloadData];

仅显示过滤结果。问题是,UITableView 将自身调整回原来的高度,因此仍然在键盘后面隐藏了一些单元格。

谁能告诉我如何改变这种行为?

4

3 回答 3

4

这听起来可能是一个自动布局问题——这些问题通常在某些操作导致视图重绘后出现。如果您使用自动布局,您应该通过调整约束来调整表格视图(或其包含视图)的大小,而不是通过设置框架。一种方法是创建一个 IBOutlet 到视图底部的约束,并在代码中修改其常量。

于 2013-05-03T02:13:22.277 回答
0

To Debug this, I would create a subclass of UITableView, and override the setBounds: method to see who is modifying it. Once you understand and can fix the problem, you can just throw away your UITableView subclass and go back to using the normal thing.

- (void)setBounds:(CGRect)bounds
{
    // Break point here and inspect stack
    [super setBounds:bounds];
}
于 2013-05-03T00:59:00.393 回答
0

我有一个类似的问题——与键盘无关,但我试图调整表的大小并在同一事件上重新加载表数据。

似乎可行的是在tableCell:cellForRowAtIndexPath. 为了提高效率,我还向 ViewContoller 提供了BOOL有关表格是否已经重新定位的信息,以便表格不会针对出现的每个单元格重新定位。

于 2014-05-12T14:29:42.700 回答