原生键盘中文输入标记状态
遇到的问题
在原生键盘中文输入法下,TextFiled 输入限制字数时会把标记高亮的文本一块处理,导致输入异常。
解决
在文本变化截取时,判断textField.markedTextRange
是否为空即可
示例
1、添加文本变化通知
/// 最大输入长度
let maxLength = 10
let textFiled = UITextField()
/// 添加文本变化通知
textFiled.addTarget(self, action: #selector(textDidChange), for: .editingChanged)
2、监听文字改变
@objc func textDidChange(textField: UITextField) {
/// 限制输入长度
if textField.markedTextRange == nil { /// 只有当高亮标记为空时,才截取
if let text = textField.text, maxLength > 0 {
if text.count > maxLength {
textField.text = text.id_subString(to: maxLength)
}
}
}
}