0

我知道-[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在其视图层次结构中,即使它没有显示它们。

4

0 回答 0