在文本字段中,用户输入字母,数字和一些空格,但首字母不包含空格我有谓词
let string = "^A-Za-z0-9 "
let predicateTest = NSPredicate(format: "SELF MATCHES %@", string)
通过使用这个,我可以限制特殊字符。但是,如何限制首字母的空格?我知道在文本字段委托中我通过使用范围来限制,但是我需要通过上述过程来进行限制。
您可以继承UITextField
的子类,创建CustomTextField
并在传递谓词时使用drop(while:)
来检查每个字符是否为仅修剪字符串开头的空格:
import UIKit
class CustomTextField: UITextField {
override func willMove(toSuperview newSuperview: UIView?) {
addTarget(self, action: #selector(editingChanged), for: .editingChanged)
textAlignment = .left
editingChanged()
}
@objc func editingChanged() {
text?.removeAll { !($0.isLetter || $0.isWholeNumber || $0.isWhitespace) }
text = .init(text?.drop { $0.isWhitespace } ?? "")
}
}