Действие кнопки возврата UIKeyboard отличается от действия UITextView resignFirstResponder

У меня есть UITextView, чтобы пользователь мог вводить текст сома. Когда UITextView вызывается с:

[textView becomeFirstResponder];

Я добавляю rightBarButtonItem, который позволяет пользователю закрыть UIKeyboard с помощью:

[textView resignFirstResponder];

Интересно, могу ли я связать клавишу возврата UIKeyboard, чтобы выполнить какое-то действие, но также и закрыть его самостоятельно. Действие состоит в том, чтобы сохранить некоторые данные, добавленные в textView.

Итак, как можно реализовать действия, в которых оба вызывают resignFirstResponder, но делают разные вещи.

Вот код, который я использую.

-(void)viewDidLoad {
  self.navigationItem.rightBarButtonItem = [[[UIBarButtonItem alloc] 
    initWithTitle:@"Cancel"
    style:UIBarButtonItemStyleBordered
    target:self action:@selector(cancelEditing)] autorelease];
}
- (void)textViewDidEndEditing:(UITextView *)textview {
    [self saveSomeData];
}

- (void)cancelEditing {
    [commentTextView resignFirstResponder]; 
}

Возможно, я понимаю, что resignFirstResponder также вызывает textViewDidEndEditing в обоих случаях.

Заранее спасибо!


person Silversnail    schedule 14.07.2011    source источник
comment
вы используете textView и textField попеременно вверху, я вижу больше ссылок на textView, это то, о чем мы говорим?   -  person Grady Player    schedule 14.07.2011
comment
@GradyPlayer Извините за это, да, я имею в виду UITextView.   -  person Silversnail    schedule 14.07.2011


Ответы (1)


Для UITextView вам необходимо реализовать UITextViewDelegate и использовать метод:

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text

Проверьте текстовый параметр, если он равен "\ n", то вы можете закрыть клавиатуру.

РЕДАКТИРОВАТЬ: речь шла о TextView, оставив ниже на всякий случай.

Сделайте свой контроллер делегатом UITextField. Затем реализуйте:

- (BOOL)textFieldShouldReturn:(UITextField *)textField

В этом методе вы можете уволить первого респондента.

UITextField также должен автоматически включать клавишу возврата.

person MarkPowell    schedule 14.07.2011