-3

UITextView で編集を行ったので、textViewShouldEndEditing を呼び出してキーボード フォーカスを削除します。リターンキーで試してみましたが、改行が追加されています。UITextView のキーボードを削除するにはどうすればよいですか。SentNotification がある textfield を使用しました。ここで何をしますか?

4

3 に答える 3

2

リターンキーを押した後にキーボードを非表示にする場合は、次の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];
于 2012-08-14T12:20:28.170 に答える
2

Return キーでキーボードを閉じることができるようにするには、実装します。

- (BOOL)textFieldShouldReturn:(UITextField *)textField {
   [textField resignFirstResponder];
   return NO; // to not insert the return character
}

キーボードを閉じるボタンをナビゲーション バーに実装します。

[_textView resignFirstResponder];
于 2012-08-14T12:13:53.010 に答える
0

UITextViewDelegate.h ファイルで textview のデリゲートを設定し、次のメソッドを記述してキーボードを返す必要があります。

-(void) textViewDidEndEditing:(UITextView *)textView
{
  [textView resignFirstResponder];
}
于 2012-08-14T12:23:23.790 に答える