iOS TextFiled 字数限制时 原生键盘中文输入 高亮适配问题

原生键盘中文输入标记状态

遇到的问题

在原生键盘中文输入法下,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)
                }
            }
        }
    }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。