IPhone: Как я могу предотвратить вставку текста, если текст превышает размер UITextview - PullRequest
0 голосов
/ 08 января 2011

У меня есть UITextView, размер которого задается через setFrame: CGRectMake (30, 100, 273, 140).

Я бы хотел запретить вставку текста, который превышает размер TextView.

Итак, я попробовал:

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text {
if ((textView.contentOffset.y + textView.frame.size.height) < textView.contentSize.height){
    return NO;
}
else {
    return YES;
}
return YES;
} 

. ПБ в том, что когда условие выполнено, я не могу использовать клавишу Backspace для удаления лишнего текста.Текстовое представление больше не редактируется.Что я здесь не так делаю?

Спасибо за вашу помощь.

Ответы [ 2 ]

0 голосов
/ 08 января 2011

Хорошо, я думаю, что узнал сам в этот раз.

Я не знаю, является ли это лучшим решением, но оно, по крайней мере, работает нормально.

- (void)textViewDidChange:(UITextView *)uiViewContent{
if ((uiViewContent.contentOffset.y + uiViewContent.frame.size.height) < self.entryTextField2.contentSize.height){
self.entryTextField2.text=[self.entryTextField2.text substringToIndex:[self.entryTextField2.text length] - 1];
 }
}

Надеюсь, это кому-нибудь поможет ...

Майк

0 голосов
/ 08 января 2011

Вы пробовали что-то похожее на это? Я написал это очень быстро и не проверял это. Дайте мне знать, если это работает. Я ничего не знаю о шрифтах, поэтому вам придется немного прочитать и настроить код соответствующим образом, где написано whateveryourfontis

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text {
    NSSTring *newString = [NSString stringWithFormat:@"%@%@", textView.text, text];
    CGSize *newSize = [newString sizeWithFont: [UIFont _whateveryourfontis_] constrainedToSize:textView.frame.size];
    return (newSize.height > textView.frame.size.height) ? NO : YES;
}
...