我有一些带有文本字段和其他标签的单元格。基本上,在用户使用键盘输入数据后,他们可以导航到另一个文本字段(通过各种方式),我将他们希望转到的文本字段保存在指针中,然后设置触发文本字段的 didEndEditing 方法的第一响应者。在 didEndEditing 中,我调用了一个刷新方法来重新加载 tableData 以更新各种标签,然后我尝试再次将 setFirstResponder 设置到我存储的文本字段中。
最终结果是键盘停留在屏幕上,但文本字段没有获得焦点。但是,如果您再试一次,它会第二次起作用...
这是一些代码。请记住,处理计算和日志等的很多内容已被删除。我只添加了与此问题相关的内容。
编辑也,我知道我提到我正在使用箭头按钮导航..如果您不使用箭头按钮,问题也在这里。您必须在离开另一个文本字段后手动按下(或单击)两次才能获得焦点。
//user presses an arrow button to enter textfield
//logic is done here to find what the next textfield would be
_nextTextFieldSelection = (UITextField *)[[_tableView cellForRowAtIndexPath:destinationIndexPath] viewWithTag:newTag];
[_nextTextFieldSelection becomeFirstResponder];
- (void)textFieldDidEndEditing:(UITextField *)textField
{
//some stuff for calculations
[self refreshScreen]
}
- (void)refreshScreen
{
[_tableView reloadData];
//set tables values
[_nextTextFieldSelection becomeFirstResponder];
}