paranitips

Never stop learning! がモットーのゆるふわエンジニアブログ

UITextViewに文字数制限/文字数カウント機能を実装する

テキストビューに以下の機能を実装します。

  • 所定文字数までしか入力させない文字数制限機能
  • 現在テキストビューに入力されている文字数のカウント

textlengthLabelに現在の文字数を表示させます。

#define MAX_LENGTH 200 // 文字数制限を200に設定
 
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
{
 
    NSUInteger newLength = (textView.text.length - range.length) + text.length; // ここ重要
    if(newLength <= MAX_LENGTH)
    {
        _textLengthLabel.text = [NSString stringWithFormat:@"%d/%d", [textView.text length],MAX_LENGTH];
        return YES;
    } else {
        textView.text = [[[textView.text substringToIndex:range.location]
                          stringByAppendingString:1]
                         stringByAppendingString:[textView.text substringFromIndex:(range.location + range.length)]];
        _textLengthLabel.text = [NSString stringWithFormat:@"%d/%d", [textView.text length],MAX_LENGTH];
        return NO;
    }

}

参考