使用 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
}
}