我知道-[UITableViewDelegate tableView:willDisplayCell:forRowAtIndexPath:]
,但我想知道UITableViewCell
实际显示的时间。
我在UITextField
里面有一个UITableViewCell
,我不能打电话-[UIResponder becomeFirstResponder]
,直到UITableViewCell
(因此UITextField
)实际显示出来。
到目前为止,我可以做到这一点,但这是一个 hack:
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
if ([indexPath isEqual:self.textFieldIndexPath]) {
dispatch_async(dispatch_get_main_queue(), ^{
[self.textField becomeFirstResponder];
});
}
}
我也尝试过覆盖-[UITableViewCell didMoveToSuperview]
,但它只在第一次UITableViewCell
被添加到UITableView
. 当UITableViewCell
是(因为支持数据已更改)然后重新添加(因为支持数据再次更改,-[UITableViewCell didMoveToSuperview]
不会被调用。我假设 aUITableView
只是将其所有内容保留UITableViewCells
在其视图层次结构中,即使它没有显示它们。