UITableView 单元格在调整大小后不响应输入
Posted
技术标签:
【中文标题】UITableView 单元格在调整大小后不响应输入【英文标题】:UITableView cells do not respond to input after resizing 【发布时间】:2015-09-29 06:38:00 【问题描述】:我在表格视图中添加新行并根据其内容调整其大小,但调整大小后,单元格内容(如按钮和didSelectRowAtIndexPath:
)不会被调用。
这是调整大小的代码:
CGRect frame = cell.replayTableView.frame;
int height = (model.replyComments.count*61)+3;
frame.size = CGSizeMake(cell.replayTableView.frame.size.width, height);
cell.tableviewReplay.refTable.frame=frame;
【问题讨论】:
您在使用自动布局吗?如果是,则 Frame 属性无法按预期工作。你需要更新 UItableview 的 Autolayout 约束。 【参考方案1】:在 heightForRowAtIndexPath 上分配一个高度
-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
if (indexPath.Row == 1)
return 50.0;
else if (indexPath.Row == 2)
return 60;
【讨论】:
【参考方案2】:首先,如果您使用自动布局,您还必须更新约束。 在您的代码中,您从不同的视图获取框架
CGRect frame = cell.replayTableView.frame;
改变高度后
CGRect frame = cell.replayTableView.frame;
int height = (model.replyComments.count*61)+3;
frame.size = CGSizeMake(cell.replayTableView.frame.size.width, height);
但随后将其设置为不同的视图
cell.tableviewReplay.refTable.frame=frame;
这可能会给您带来问题。
【讨论】:
【参考方案3】: // Declare a variable in yourController.h CGFloat tableHeight;
// set height in heightforRowAtindex
// run loop for number of rows in ur tableview data array
// put this code when ur data array is not empty i.e after responce of webservice etc
// as your tableview is and custom cells are not created programatically , so you need viewDidLayoutSubviews to reset frames
tableHeight = 0.0f;
for (int i = 0; i < [dataArray count]; i ++)
tableHeight += [self tableView:self.multipleArticletableView heightForRowAtIndexPath:[NSIndexPath indexPathForRow:i inSection:0]];
[self viewDidLayoutSubviews];
// put code below in viewDidLayoutSubviews method . it will work
self.multipleArticletableView.frame = CGRectMake(self.multipleArticletableView.frame.origin.x, self.multipleArticletableView.frame.origin.y,self.multipleArticletableView.frame.size.width, tableHeight);
【讨论】:
你的表格视图是程序化的,或者你有拖放到界面【参考方案4】:此类问题的最常见原因是单元格具有一些 UI 组件,这些组件会拦截用户的点击,并且不会将点击传递到下方的单元格。您可以通过禁用这些组件上的用户交互来解决此问题。
例如,如果您在单元格中添加了UIView
,则调用
otherView.userInteractionEnabled = NO;
【讨论】:
以上是关于UITableView 单元格在调整大小后不响应输入的主要内容,如果未能解决你的问题,请参考以下文章
UITableViewAutomaticDimension 单元格在滚动或拉动刷新后调整大小
在 insertSections 不起作用后 UITableView 键盘调整大小