iOS限制UITextField或UITextView的中文字数

使用 markedTextRange方法来限制拼音或笔画的输入不计入限制的字符

Objective-C

// 限制20个字输入
if (text.length > 20 && self.textField.markedTextRange == nil) {
    // define the range you're interested in
    NSRange stringRange = {0, MIN([text length], 20)};

    // adjust the range to include dependent chars
    stringRange = [text rangeOfComposedCharacterSequencesForRange:stringRange];

    // Now you can create the short string
    NSString *shortString = [text substringWithRange:stringRange];
    [self.textField setText:shortString];
}

Swift

func textDidChange(_ textField: UITextField) {
    hideCursor = autocompleteTextLabel != nil
    removeCompletion()

    let isAtEnd = selectedTextRange?.start == endOfDocument
    let isEmpty = lastReplacement?.isEmpty ?? true
    if !isEmpty, isAtEnd, markedTextRange == nil {
        notifyTextChanged?()
    } else {
        hideCursor = false
    }
}

猜你喜欢

转载自blog.csdn.net/h1101723183/article/details/79240603