2014-01-30 3 views
11

Итак, у меня есть UITextField, который является первым ответчиком, когда открывается страница (отлично работает). Затем у меня есть UITextView, который становится первым ответчиком, когда пользователь нажал кнопку возврата, и это моя проблема. При нажатии кнопки возврата вещи работают нормально с первыми респондентами, но UITextView добавляет строку и начинает курсор, мигающий во второй строке. Есть ли кто-нибудь, кто может мне помочь? Заранее спасибо!UITextView Добавление новой строки при первом обращении

Вот переключатель

- (BOOL)textFieldShouldReturn:(UITextField *)textField { 
    [textField resignFirstResponder]; 
    [self.fieldDescription.textView becomeFirstResponder]; 

    return YES; 
} 

Смотрите, где значок мигает? Вот где она начинается, когда изменяются первые ответчики ... enter image description here

ответ

14

Большой вопрос и описание. У меня была точно такая же проблема.

Никакой ответ на эту тему не решил это для меня. Кто-то добавил ссылку в комментарии (от @AndreiRadulescu) от another thread. ответ от @rmaddy на эту тему решил. Его ответ был:

Одно решение, чтобы решить это, когда вы реализуете textFieldShouldReturn : метод делегата, не забудьте вернуть NO, а не YES. Возвращая 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 
} 
+0

Этот человек хорошо разбирается в Swift ... спасибо .. – Tuhin

1

Попробуйте использовать этот

- (void)textFieldDidEndEditing:(UITextField *)textField 
{ 
    [self.fieldDescription becomeFirstResponder]; 
} 

вместо

- (BOOL)textFieldShouldReturn:(UITextField *)textField; 

textFieldShouldReturn -> автоматически уходит в отставку первый ответчик

+0

Кажется, делает то же самое .. :( –

+1

Похоже, это решило проблему ... http://stackoverflow.com/questions/21077842/uitextview-add-new-line-unintentionally –

+0

Точнее, этот ответ :) http://stackoverflow.com/a/21078008/639708 –

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; 
} 
0

я в моем случае, я просто установить пустой текст, когда textViewShouldBeginEditing

- (BOOL)textViewShouldBeginEditing:(UITextView *)textView 
{ 
    self.myTextView.text [email protected]""; 

    return YES; 
} 
Смежные вопросы