UITextView Добавление новой строки при первом ответе
Итак, у меня есть UITextField, который является первым ответчиком, когда страница открыта (отлично работает). Тогда у меня есть UITextView, который становится первым ответчиком, когда пользователь нажал return и что там, где моя проблема. При нажатии кнопки возврата вещи работают нормально с первыми респондентами, но UITextView добавляет строку и начинает курсор, мигающий во второй строке. Есть ли кто-нибудь, кто может мне помочь? Спасибо заранее!
Вот переключатель
- (BOOL)textFieldShouldReturn:(UITextField *)textField {
[textField resignFirstResponder];
[self.fieldDescription.textView becomeFirstResponder];
return YES;
}
Смотрите, где значок мигает? Что там, где оно начинается, когда меняются первые респонденты...
![enter image description here]()
Ответы
Ответ 1
Отличный вопрос и описание. У меня была такая же проблема.
Никакой ответ на эту тему не решил это для меня. Кто-то добавил ссылку в комментарии (by @AndreiRadulescu) из другого потока. ответ от @rmaddy на эту тему решил. Его ответ был:
Одним из решений для решения этой проблемы является textFieldShouldReturn: метод делегирования, обязательно верните NO, а не ДА. Возвращая NO, новая строка не передается в текстовое поле.
- (BOOL)textFieldShouldReturn:(UITextField *)textField {
// move to next field or whatever you need
[myTextView becomeFirstResponder];
return NO;
}
В Swift:
//Dismisses keyboard upon tapping the return key
func textFieldShouldReturn(textField: UITextField) -> Bool {
txtTask.resignFirstResponder()
return false
}
Ответ 2
TextView имеет метод делегата, который предназначен для проверки символов, набираемых пользователем
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text;
с помощью этого вы можете остановить новую строку и вернуть клавиатуру, см. ниже код
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
{
if([textView.text isEqualToString:@"\n"])
{
[textView resignFirstResponder];
return NO;
}
return YES;
}
Ответ 3
Попробуйте использовать
- (void)textFieldDidEndEditing:(UITextField *)textField
{
[self.fieldDescription becomeFirstResponder];
}
вместо
- (BOOL)textFieldShouldReturn:(UITextField *)textField;
textFieldShouldReturn
→ автоматически уходит в отставку с первым ответчиком
Ответ 4
В моем случае я просто установил пустой текст, когда textViewShouldBeginEditing
- (BOOL)textViewShouldBeginEditing:(UITextView *)textView
{
self.myTextView.text [email protected]"";
return YES;
}