0

だから私はUITextViewについての説明を読んでいて、キーボードの「戻る」ボタンを押すとキーボードが自動的に非表示になると言っています。しかし、それは機能していなかったので、私は作成してみました

- (IBAction)textViewReturn:(id)sender; 
{
   [myTextView resignFirstResponder];
}

それもうまくいかなかったので、私もやってみました:

- (BOOL)textViewShouldReturn:(UITextView *)textView
{
  [myTextView resignFirstResponder];
  return NO;
} 

そもそも取引全体が機能していない理由がわかりません。誰かが助けることができるかどうか疑問に思いますか?

4

3 に答える 3

2

UITextViewクラスリファレンスには、Returnキーを押すとキーボードが自動的に非表示になるという内容は表示されません。

また、プロトコルtextViewShouldReturn:にはメッセージがありません。プロトコルにメッセージがありますが、テキストビューはテキストフィールドではありません。UITextViewDelegatetextFieldShouldReturn:UITextFieldDelegate

ユーザーがReturnキーを押したときにキーボードを非表示にする場合は、2つのことを行う必要があります。

まず、オブジェクト(通常はView Controller)をテキストビューのdelegateアウトレットに接続する必要があります。あなたはあなたのペン先でそれをすることができます、あるいはあなたはおそらくあなたのviewDidLoadメソッドでそれをコードで行うことができます:

- (void)viewDidLoad {
    [super viewDidLoad];
    myTextView.delegate = self;
}

textView:shouldChangeTextInRange:replacementText:次に、デリゲートオブジェクトにを実装する必要があります。

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text {
    if ([text isEqualToString:@"\n"]) {
        [textView resignFirstResponder];
        return NO;
    } else {
        return YES;
    }
}

ユーザーが改行やその他の文字を含むテキストを貼り付けると、改行がキャッチされないことに注意してください。ユーザーがReturnキーをタップしたとき、または改行だけを含むテキストを貼り付けたときにのみ通知されます。

デリゲートのクラスをUITextViewDelegateプロトコルに準拠していると宣言できます。その場合、Xcodeはメソッド名をオートコンプリートするのに役立ちます。ただし、クラスがプロトコルに準拠していなくても機能します。

于 2012-12-17T04:11:04.960 に答える
1

UITextViewの戻るボタンは、カーソルを新しい行に移動するために使用されます。ただし、戻るボタンのキーボードを削除したい場合は、次のコードを試してください。ユーザーが戻るボタンを押すと、キーボードを終了します。したがって、問題を確実に解決した次のコードを試してください。

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text {
    if ([text isEqualToString:@"\n"]) {
        [textView resignFirstResponder];
        return NO;
    } else {
        return YES;
    }
}
于 2012-12-17T04:22:51.860 に答える
1

コメントによると、のUITextField代わりにを使用する場合UITextViewは、リターンキーを押したときにキーボードを非表示にするために、テキストフィールドのデリゲートに次の関数を実装する必要があることを除いて、同じです(これを最初に設定してください):

- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
    [textField resignFirstResponder];
    return YES;
}
于 2012-12-17T05:45:13.530 に答える