在Swift中,是否可以将最大INT值设置为UITextField?
我的用例是我有5个文本字段需要具有最大int值。这些值的范围从500到10,000。 5个不同的文本字段中的每一个都具有不同的最大值。我不能使用选择器或下拉菜单,因为增量将为1.并且UISlider太难以“擦入”数字。
如果max int值为5,000,则用户无法输入(在数字键盘的键盘类型上)任何高于5000的值。
字符数不起作用,因为如果最大值为500,如果我设置为3个字符,则用户可以输入999.
答案 0 :(得分:6)
您可以检查文本字段中的当前值是否小于您指定的最大整数值:
(此时您可能希望将键盘类型更改为.NumberPad
,以便用户只键入数字值。)
textField.keyboardType = .NumberPad
-
func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool {
let newText = NSString(string: textField.text!).stringByReplacingCharactersInRange(range, withString: string)
if newText.isEmpty {
return true
}
else if let intValue = Int(newText) where intValue <= self.maxValue {
return true
}
return false
}
我为你创建了example project。你可以下载并玩它。
答案 1 :(得分:0)
这是Swift 4及更高版本的更新,确保输入的值是0到5000之间的整数。
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
let newText = (textField.text! as NSString).replacingCharacters(in: range, with: string) as String
if let num = Int(newText), num >= 0 && num <= 5000 {
return true
} else {
return false
}
}