2

キーボードの [DONE] ボタンを押してキーボードを閉じることができないようです。誰でもそれを機能させる方法を知っていますか?

- (BOOL)textFieldShouldReturn:(UITextField *)textField {

    [textField resignFirstResponder];
    return YES;
}

- (BOOL)textViewShouldEndEditing:(UITextView *)textView{
    [textView resignFirstResponder];
    return YES;
}
4

1 に答える 1

5

あなたのコード、特にテキストフィールドのファーストレスポンダーを辞任すること-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;
}
于 2013-07-28T22:37:29.193 に答える