编辑aUITextField
并按下 return 后,我循环并检查下一个字段。我得到该字段的索引路径,然后保存它。接下来我重新加载表数据,并且在构建表时,如果indexPath
等于indexPath
下一个文本字段的值,那么我将其设置为第一响应者。
我在正确的地方抓住了正确textField
的indexPath
一切,但是第一响应者没有得到设置。相反,焦点消失了。
我的代码:
//inside UITextFieldShouldReturn
for (int i = uiTextField.fieldTag + 1; i < group.fields.count; i++) {
ObjectEditField *field = [group.fields objectAtIndex:i];
if (field.propName && field.updateObjectOnEdit == YES && [field isKindOfClass:[ObjectEditTextField class]]) {
// set the active field
activeField = field;
// obtain a pointer to the textfield object and set it to be the first responder
ObjectEditTextField *textField = (ObjectEditTextField *)field;
if (![textField.field isFirstResponder]) {
UITableViewCell *cell = (UITableViewCell *)[[[uiTextField superview] superview] superview];
firstResponderIndexPath = [_fieldsTableView indexPathForCell:cell];
然后,一旦我firstResponderIndexPath
调用reloadData
了表格视图,在里面tableView:cellForRowAtIndexPath:
我有:
if (firstResponderIndexPath.row + 1 == indexPath.row)
{
ObjectEditTextField *textField = (ObjectEditTextField *)field;
NSLog(@"display: %@", textField.field.text);
[textField.field becomeFirstResponder];
}
的输出NSLog
是正确的,并且应该是正确的字段。但是,第一响应者没有正确设置。