在 swift 中,我试图创建一个文本字段,该文本字段将允许启用按钮,但仅当文本字段包含整数时。我怎样才能做到这一点?
两件事情:
指定键盘类型以仅显示数字键盘。所以,设置keyboardType
to .numberPad
。然而,这还不足以阻止用户在文本字段中输入无效字符。例如,用户在使用 iPad 时仍然可以粘贴文本或切换键盘。
-
指定文本字段的委托并实现shouldChangeCharactersInRange
不接受除数字之外的任何字符0
though 9
:
class ViewController: UIViewController, UITextFieldDelegate {
@IBOutlet weak var textField: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
// you can set the following two properties for the text field in Interface Builder, if you'd prefer
textField.delegate = self
textField.keyboardType = .numberPad
}
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
let invalidCharacters = CharacterSet(charactersIn: "0123456789").inverted
return string.rangeOfCharacter(from: invalidCharacters) == nil
}
// or, alternatively:
//
// func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool {
// return string.range(of: "^\\d*$", options: .regularExpression) != nil
// }
}
对于 Swift 2 的演绎,请参阅此答案的先前版本。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)