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