UITextViewクラスリファレンスには、Returnキーを押すとキーボードが自動的に非表示になるという内容は表示されません。
また、プロトコルtextViewShouldReturn:
にはメッセージがありません。プロトコルにメッセージがありますが、テキストビューはテキストフィールドではありません。UITextViewDelegate
textFieldShouldReturn:
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はメソッド名をオートコンプリートするのに役立ちます。ただし、クラスがプロトコルに準拠していなくても機能します。