UITextView で編集を行ったので、textViewShouldEndEditing を呼び出してキーボード フォーカスを削除します。リターンキーで試してみましたが、改行が追加されています。UITextView のキーボードを削除するにはどうすればよいですか。SentNotification がある textfield を使用しました。ここで何をしますか?
3 に答える
リターンキーを押した後にキーボードを非表示にする場合は、次のUITextViewDelegateメソッドを実装します。
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text {
// Did user press return key?
if([text isEqualToString:@"\n"]) {
// tell the textView to resign being first responder, which will also hide the keyboard
[textView resignFirstResponder];
// Don't allow textView to insert a LF into its text property
return NO;
}
// allow all other edits
return YES;
}
代わりに複数の行が必要な場合は、リターンキーを使用できないため、このためのボタンを作成する必要があります。ViewControllerがUINavigationControllerのNavigationスタックにプッシュされている場合、次のコードをinitメソッドに追加します。
UIBarButtonItem *doneButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonItemStyleDone
target:self
action:@selector(done)];
self.navigationItem.rightBarButtonItem = doneButton;
[doneButton release];
doneメソッドは、UITextViewにファーストレスポンダーであることを辞任するように指示するだけです。
- (void)done;
{
[self.textView resignFirstResponder];
}
これには明らかに、プロパティまたはIBOutletを介してUITextViewにアクセスできる必要があります。
UINavigationControllerを使用しない場合は、ビューに単純なUIButtonを追加し(たとえば、ビューXIBファイルのInterface Builderを介して)、ターゲットアクションを介してdoneメソッドを呼び出します。
[button addTarget:self action:@selector(done) forControlEvents:UIControlEventTouchUpInside];
Return キーでキーボードを閉じることができるようにするには、実装します。
- (BOOL)textFieldShouldReturn:(UITextField *)textField {
[textField resignFirstResponder];
return NO; // to not insert the return character
}
キーボードを閉じるボタンをナビゲーション バーに実装します。
[_textView resignFirstResponder];
UITextViewDelegate
.h ファイルで textview のデリゲートを設定し、次のメソッドを記述してキーボードを返す必要があります。
-(void) textViewDidEndEditing:(UITextView *)textView
{
[textView resignFirstResponder];
}