Подтвердить что ты не робот

Как сделать UITextView "Готово" кнопку resignFirstResponder?

Я пытаюсь сделать мой редактируемый UITextView отставку клавиатуры (resignFirstResponder), когда пользователь нажимает "Готово". Используя UITextField, я смог сделать это со следующим кодом:

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

... и затем привязать его к соответствующему UITextField в Interface Builder к действию "Закончено на выходе".

Однако, с UITextView, я не могу получить доступ к действию "Закончено на выходе". Любые предложения о том, как это сделать?

4b9b3361

Ответ 1

новый ответ

В вашем представлении у вас будет UIBarButton ( "Готово" ), который подключен к IBAction ниже:

- (IBAction)doneEditing:(id)sender {
    [textView resignFirstResponder];
}

Где textView - это ваша текстовая точка, определенная в вашем .h файле, и подключенная в Storyboard или .xib файле. Вот так:

@property (retain, nonatomic) IBOutlet UITextView *textView;

старый ответ

Проверьте следующее:

  • Указан ли UITextViewDelegate   в .h
  • Внедрить метод делегирования   для uitextview:   textViewShouldEndEditing, верните YES
  • убедитесь, что ваш .m(контроллер) - это   делегат для uitextview в IB
  • resignFirstResponder теперь должен   работа.

Ответ 2

Принятый ответ не помог мне. Вместо этого следует вызвать следующий метод делегата следующим образом:

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

Вставьте это в класс, который вы назначаете как делегат UITextView, и он будет работать.

Ответ 3

Чтобы кнопка done отменила клавиатуру и resignFirstResponder, вам нужно реализовать метод делегата.

  • В вашем .h реализовано UITextFieldDelegate

    @interface YourViewController : UIViewController <UITextFieldDelegate>
    
  • Затем реализуем textFieldShouldReturn в вашем .m

    -(BOOL) textFieldShouldReturn:(UITextField *)textField
    {
    [textField resignFirstResponder];
    return YES;
    }
    
  • Не забудьте связать делегат UITextField с файлом Owner (очень важно)