あなたのコード、特にテキストフィールドのファーストレスポンダーを辞任すること-textFieldShouldReturn
は問題ありません。
のデリゲートを設定するのを忘れて、おそらく正しく接続していないと思いますUITextField
。
私の最近のプロジェクトのスニペットでは、2 つのフィールドに Next リターン キーと Done リターン キーを使用しました。
- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
[textField resignFirstResponder];
if(textField == self.nameTextField)
[self.descriptionTextField becomeFirstResponder];
return YES;
}
に関してUITextView
(あなたの質問はタイトルに具体的に言及UITextField
されていますが、あなたのコードにはテキストフィールドとテキストビューの両方があります)、ファーストレスポンダーを別の方法で辞任する必要があります。
Text ビューは、改行にリターン キーを使用できる複数行を含む長いテキスト入力用であるため、ユーザーがテキストを変更したことを検出する必要があります。改行を入力しようとした場合は、その時点で手動で辞任します。例は次のとおりです。
- (BOOL)textView:(UITextView *)textView
shouldChangeTextInRange:(NSRange)range
replacementText:(NSString *)text
{
if([text isEqualToString:@"\n"])
[textView resignFirstResponder];
return YES;
}