将max int值(不是字符数)设置为UITextField

时间:2016-05-12 19:01:12

标签: ios swift int uitextfield max

在Swift中,是否可以将最大INT值设置为UITextField?

我的用例是我有5个文本字段需要具有最大int值。这些值的范围从500到10,000。 5个不同的文本字段中的每一个都具有不同的最大值。我不能使用选择器或下拉菜单,因为增量将为1.并且UISlider太难以“擦入”数字。

如果max int值为5,000,则用户无法输入(在数字键盘的键盘类型上)任何高于5000的值。

字符数不起作用,因为如果最大值为500,如果我设置为3个字符,则用户可以输入999.

2 个答案:

答案 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
    }
}