自定義 UITextField 用於過濾輸入文字
以下是自定義 UITextField
的示例,它僅採用數字文字並丟棄所有其他文字。
注意: 對於 iPhone,使用數字鍵盤很容易做到這一點,但對於 iPad,沒有隻有數字的鍵盤
class NumberTextField: UITextField {
required init(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
registerForTextFieldNotifications()
}
override init(frame: CGRect) {
super.init(frame: frame)
}
override func awakeFromNib() {
super.awakeFromNib()
keyboardType = .numberPad//useful for iPhone only
}
private func registerForTextFieldNotifications() {
NotificationCenter.default.addObserver(self, selector: #selector(NumberTextField.textDidChange), name: NSNotification.Name(rawValue: "UITextFieldTextDidChangeNotification"), object: self)
}
deinit {
NotificationCenter.default.removeObserver(self)
}
func textDidChange() {
text = filteredText()
}
private func filteredText() -> String {
let inverseSet = CharacterSet(charactersIn:"0123456789").inverted
let components = text!.components(separatedBy: inverseSet)
return components.joined(separator: "")
}
}
因此,無論我們想要只將數字作為輸入文字的文字欄位,我們都可以使用此自定義 UITextField