欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

UITextField和UITextView正确限制输入字符长度,中文汉字预输入正确处理方式

程序员文章站 2024-02-26 10:35:40
...

        一般而言,字符串输入长度限制,在要求不是很高的情况下,直接在textField或textView的didEndEditing方法中进行提示和文字截取,即可满足开发的需要;

 

        对于需要在输入过程中限制字符串输入长度的情况下,则只能在textDidChange中处理,然而直接在这里限制也还是会有限制不完美的问题,即在输入中文时,存在预录入中文汉字的问题,这时候如果直接进行限制,则会在你输入时,当输入的拼音字符满足限制条件的情况下就会直接提示限制文字。 为了解决这个问题,因此需要对预录入文字进行相应的处理。

 

处理步骤:

    1. 在适当的地方添加textDidChange的通知

NotificationCenter.default.addObserver(self, selector: #selector(textDidChanged), name: UITextField.textDidChangeNotification, object: textField)

   2. 在通知中进行字符限制处理

let textfield = textField as! UITextField
//获取当前键盘输入的语言
let lang = textField.textInputMode?.primaryLanguage
//为汉字输入时,特别处理
if lang == "zh-Hans" {
	let range = textfield.markedTextRange
	if range == nil {
		if (textfield.text?.count)! >= length {
			textfield.text = String((textfield.text?.prefix(length))!)
		}
	}
} else {
	if (textfield.text?.count)! >= length {
		textfield.text = String((textfield.text?.prefix(length))!)
	}
}

  3. 在适当的地方移除通知监听

NotificationCenter.default.removeObserver(self)

 

以上是以UITextField为例, UITextView的处理方式一样。