限制textField中的字符数

时间:2017-05-24 22:28:26

标签: swift uitextfield

大家好我使用下面的代码来限制文本字段中的字符数量。它在键入时工作正常,但是当我粘贴或从另一个var中取出字符串时它会显示整个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

}

textField名为regNumber.text

0 个答案:

没有答案