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
は正しく、フィールドは正しいはずです。ただし、ファーストレスポンダーが正しく設定されません。