【发布时间】:2015-07-23 16:36:42
【问题描述】:
我有 3 个名为 text1、text2 和 text3 的文本字段。
如何对它们进行编程以使其仅接受整数输入?
我见过的大多数类似问题都不适用于最新版本的 XCode(使用 Swift 2),并且不适合多个文本字段。
这个似乎很有帮助:How can I declare that a text field can only contain an integer?
【问题讨论】:
我有 3 个名为 text1、text2 和 text3 的文本字段。
如何对它们进行编程以使其仅接受整数输入?
我见过的大多数类似问题都不适用于最新版本的 XCode(使用 Swift 2),并且不适合多个文本字段。
这个似乎很有帮助:How can I declare that a text field can only contain an integer?
【问题讨论】:
首先按照iAnurag的建议将keyboardType更改为UIKeyboardTypeNumberPad
并检查委托方法shouldChangeCharactersInRange 中的内容更改(使用 Swift 2.0 和 Xcode 7 测试的代码)
func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool {
// Find out what the text field will be after adding the current edit
let text = (textField.text! as NSString).stringByReplacingCharactersInRange(range, withString: string)
if text == "" {
return true
}
if let _ = Int(text) {
return true
} else {
return false
}
}
【讨论】:
按照@iAnurag 的建议进行操作,同时实现UITextFieldDelegate 的- textField:shouldChangeCharactersInRange:replacementString: 以检查replacementString 是否包含任何非数字字符。因为用户仍然可以将文本复制到其他地方并将其粘贴到文本字段中。
【讨论】: