Swift 限制文本字段中的字符数

Swift 限制文本字段中的字符数,swift,uitextfield,Swift,Uitextfield,大家好,我正在使用下面的代码来限制文本字段中的字符数。它在键入时工作正常,但当我粘贴或从另一个变量获取字符串时,它会显示整个txt。当我再次单击它时,它会删除额外的字符。当粘贴的文本只显示我指定的数量时,有没有办法做到这一点 import UIKit private var maxLengths = [UITextField: Int]() extension UITextField { @IBInspectable var maxLength: Int { get {

大家好,我正在使用下面的代码来限制文本字段中的字符数。它在键入时工作正常,但当我粘贴或从另一个变量获取字符串时,它会显示整个txt。当我再次单击它时,它会删除额外的字符。当粘贴的文本只显示我指定的数量时,有没有办法做到这一点

import UIKit

private var maxLengths = [UITextField: Int]()

extension UITextField {

@IBInspectable var maxLength: Int {

  get {

      guard let length = maxLengths[self] 
         else {
            return Int.max
  }
  return length
 }
  set {
  maxLengths[self] = newValue
  addTarget(
     self,
     action: #selector(limitLength),
     for: UIControlEvents.editingChanged
  )
  }
}
func limitLength(textField: UITextField) {
guard let prospectiveText = textField.text,
    prospectiveText.characters.count > maxLength
else {
    return
}

 let selection = selectedTextRange
 let maxCharIndex = prospectiveText.index(prospectiveText.startIndex, offsetBy: maxLength)
 text = prospectiveText.substring(to: maxCharIndex)
selectedTextRange = selection
}
}
方法

func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {

    let currentText = (textField.text as NSString?) ?? NSString()
    let currentCharacterCount = currentText.length
    if range.length + range.location > currentCharacterCount {
        return false
    }
    let newLength = currentText.replacingCharacters(in: range, with: string).characters.count
    return newLength <= 3

}
func textField(textField:UITextField,shouldChangeCharacters范围:NSRange,replacementString:string)->Bool{
让currentText=(textField.text作为NSString?±NSString()
让currentCharacterCount=currentText.length
如果range.length+range.location>currentCharacterCount{
返回错误
}
让newLength=currentText.replacingCharacters(in:range,with:string).characters.count

return newLength,其中是
文本字段的实现(uU7;:shouldChangeCharactersIn:replacementString:)
delegate方法?我已在中添加了此函数,我不确定是否必须在某处调用它?是否已设置文本字段的委托?否则将不会调用您实现的
UITextFieldDelegate
方法。我已设置委托