1

У меня есть UITextField, что я хотел бы, чтобы включить автоматическое завершение на по:iphone настройки UITextView делегат ломает автозаполнение

[self.textView setAutocorrectionType:UITextAutocorrectionTypeYes]; 

Это работает нормально, за исключением того, когда я даю UITextView делегата. Когда задан делегат, автозаполнение просто перестает работать. Делегат имеет только следующий метод:

- (void)textViewDidChange:(UITextView *)textView 
{ 
self.textView.text = [self.textView.text stringByReplacingOccurrencesOfString:@"\n" withString:@""]; 

int left = LENGTH_MAX -[self.textView.text length]; 
self.characterCountLabel.text = [NSString stringWithFormat:@"%i",abs(left)]; 

} 

Кто-нибудь знает, как включить автоматическое завершение и набор делегатов?

Спасибо!
Tristan

+0

Было бы хорошо, если вы подробно остановитесь на том, почему вам нужно вырезать символы \ n? – Jasarien

+0

Привет Jasarien. TextView принимает сообщения от пользователя для публикации в виде твиттера. Они должны быть не более, чем несколькими предложениями и всего на одной строке. Полагаю, я мог бы просто удалить новые строки после того, как пользователь отправил сообщение, но это не идеально. Я бы ожидал, что будет возможность использовать стандартные методы делегатов без нарушения других функций. – WoodenKitty

ответ

0
NSRange r= [self.textView.text rangeOfString:@"\n"]; 
if(r.location!=NSNotFound) //must check before replacing new lines right away, otherwise spellcheck gets broken 
{ 
    self.textView.text = [self.textView.text stringByReplacingOccurrencesOfString:@"\n" withString:@""]; 
} 

Проблема была вызвана тем, что она потенциально модифицирует текст каждый раз, когда он был изменен (т. Е. Вызывает метод замещения). Решение заключалось в том, чтобы вызвать метод замены только тогда, когда это было необходимо.

0

Это, вероятно, нарушение автозаполнения, поскольку вы одновременно изменяете текст в UITextView.

0

Получить это: все, что вам нужно сделать, это удалить UITextViewDelegate из вашего файла интерфейса (.h).

Вы все еще можете установить делегат в textView в nib.

Нечетный, не так ли? Работал для меня, я надеюсь, что это решит вашу проблему.

 Смежные вопросы

  • Нет связанных вопросов^_^