一尘不染

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

swift

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

我的用例是我有5个文本字段,它们需要具有最大的int值。这些值的范围从500一直到10,000。5个不同的文本字段中的每个字段将具有不同的最大值。我不能使用选择器或下拉列表,因为增量将是1。UISlider太难了,无法“擦入”数字。

如果最大int值为5,000,则用户不能(在数字键盘的键盘类型上)输入大于5000的值。

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


阅读 255

收藏
2020-07-07

共1个答案

一尘不染

您可以检查文本字段中的当前值是否小于您指定的最大整数值:

(此时,您可能希望将键盘类型更改为.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
}

我为您创建了一个示例项目。您可以下载并试用它。

2020-07-07