UITextView 限制字符長度

jopen 9年前發布 | 2K 次閱讀 C/C++ UITextView

頁面啟動時添加通知
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(textViewChange:) name:@"UITextViewTextDidChangeNotification" object:self.txtSuggestion];

  • (BOOL)textView:(UITextView )textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString )text { NSString *toBeString = [textView.text stringByReplacingCharactersInRange:range withString:text]; if (toBeString.length > kMaxLength && range.length!=1){
      textView.text = [toBeString substringToIndex:kMaxLength];
      return NO;
    
    } return YES; }

-(void)textViewChange:(NSNotification )obj{ UITextField textField = (UITextField *)obj.object;

NSString *toBeString = textField.text;
NSString *lang = [[UIApplication sharedApplication]textInputMode].primaryLanguage; // 鍵盤輸入模式
if ([lang isEqualToString:@"zh-Hans"]) { // 簡體中文輸入,包括簡體拼音,健體五筆,簡體手寫
    UITextRange *selectedRange = [textField markedTextRange];
    //獲取高亮部分
    UITextPosition *position = [textField positionFromPosition:selectedRange.start offset:0];
    // 沒有高亮選擇的字,則對已輸入的文字進行字數統計和限制
    if (!position) {
        if (toBeString.length > kMaxLength) {
            textField.text = [toBeString substringToIndex:kMaxLength];
        }
    }
    // 有高亮選擇的字符串,則暫不對文字進行統計和限制
    else{

    }
}
// 中文輸入法以外的直接對其統計限制即可,不考慮其他語種情況
else{
    if (toBeString.length > kMaxLength) {
        textField.text = [toBeString substringToIndex:kMaxLength];
    }  
}  

}

離開頁面時 [[NSNotificationCenter defaultCenter]removeObserver:self name:@"UITextFieldTextDidChangeNotification"
object:self.txtSuggestion];</pre>

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!