グループ化されたテーブル ビューがあり、ユーザーが Enter キーを押したときに新しいファーストレスポンダをテキスト フィールドに設定しようとしています。
これは私にとって新しいことではなく、関係のない変更を加える前はコードが機能していましたが、現在は機能していません。ファーストレスポンダを設定すると、正しいテキスト フィールドへのポインタが表示されますが、何も起こりません。
フォーカスはテキスト フィールドから完全に離れ、キーボードは画面上にとどまります。その後、ユーザーが再びテキスト フィールドにフォーカスを移すまで、Enter キーと「キーボードを隠す」キーの両方が機能しなくなります。
コードは次のとおりです。
- (void)uiTextFieldShouldReturn:(ObjectEditTextField *)uiTextField
{
if ((group.fields.count - 1) > uiTextField.fieldTag)
{
//loop through every table group
for (int i = uiTextField.fieldTag + 1; i < group.fields.count; i++) {
//get whatever field is in the row (not necessarily a text field)
ObjectEditField *field = [group.fields objectAtIndex:i];
// a check if the field is of type UITextField
if (field.propName && field.updateObjectOnEdit == YES && [field isKindOfClass:[UITextField class]]) {
// set the active field
activeField = field;
// adjust the table view offset to make sure the text field is visble
[self setTableViewOffsetForTextField:field];
// obtain a pointer to the textfield object and set it to be the first responder
UITextField *textField = (UITextField *)field;
NSLog(@"field %@", textField.fieldLabel);
if (![textField.field isFirstResponder]) {
[textField.field becomeFirstResponder];
return;
}
break;
}
}
}