Как можно отредактировать длину текста UITextView?

У меня есть UITextView, пользователь может писать максимум 160 символов в textView. Как я могу исправить максимальную длину текста UITextView?

Ответ 1

Заменить

 - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string

с

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

на который отвечает здесь

Ответ 2

Этот фрагмент кода также работает с Copy/Paste, но также справляется с ситуацией при попытке вставить количество символов, которые сделают просмотр текста выше предела. В этом случае вставляются только первые символы строки.

#define MAX_LENGTH 15 // Whatever your limit is
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
{
    NSUInteger newLength = (textView.text.length - range.length) + text.length;
    if(newLength <= MAX_LENGTH)
    {
        return YES;
    } else {
        NSUInteger emptySpace = MAX_LENGTH - (textView.text.length - range.length);
        textView.text = [[[textView.text substringToIndex:range.location] 
                                            stringByAppendingString:[text substringToIndex:emptySpace]]
                                         stringByAppendingString:[textView.text substringFromIndex:(range.location + range.length)]];
        return NO;
    }
}

Ответ 3

Поздняя встреча с этим ответом; Решение manicaesar не работало для меня. Здесь моя реализация одной и той же идеи:

#define MAX_LENGTH 140
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)replacementText
{
    NSString *newText = [ textView.text stringByReplacingCharactersInRange: range withString: replacementText ];
    if( [newText length]<= MAX_LENGTH ){
        return YES;
    }
    // case where text length > MAX_LENGTH
    textView.text = [ newText substringToIndex: MAX_LENGTH ];
    return NO;
}

Ответ 4

вы можете увидеть аналогичный вопрос здесь. он получил ответ

Ответ 5

Swift 3

fileprivate let maxLen = 5

    extension MyViewController : UITextViewDelegate{
        func textView(_ textView: UITextView, shouldChangeTextIn range: NSRange, replacementText text: String) -> Bool {

            let newLen = (textView.text.characters.count - range.length) + text.characters.count
            return newLen <= maxLen
        }

    }