我在每个单元格内都有一个带有UITextField的UITableView。存储当前正在编辑的单元格索引的模型对象。如果单元格在屏幕外滚动,我的应用程序将失去第一响应者状态。 (否则可能会导致问题)。现在,假设对应于该索引的一个单元格(可能是相同的单元格,或者可能是不同的单元格)将滚动回到屏幕上。我想将该单元格的textField设置为firstResponder。我的代表确实接到了电话

tableView: willDisplayCell: forRowAtIndexPath:

对应于新单元格。但是,此时调用成为firstFirstResponder:并没有帮助,因为该单元格在显示之前不会接受firstResponder状态。

除了使用计时器之外,关于如何调用的任何想法都成为firstResponder:在该单元实际上能够成为第一响应者的时候?

编辑:cellForRowAtIndexPath:总是在willDisplayCell:之前被调用。所以没有帮助。

最佳答案

我还没有尝试过,但是我想尝试的第一件事是在cellForRowAtIndexPath中...

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    // standard stuff to build cell and setup it's state

    if ([indexPath isEqual:self.myModel.indexPathOfTextFieldBeingEdited]) {
        // you probably have a handle to the text field from the setup above
        UITextField *textField = (UITextField *)[cell viewWithTag:SOME_TAG];
        [textField performSelector:@selector(becomeFirstResponder) withObject:nil afterDelay:0.0];
    }
    return cell;
}

关于ios - UITableViewCell中的UITextField —以编程方式使其在屏幕上显示为firstResponder吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15189460/

10-09 14:02