Setting a max int value (not character count) to a

2019-02-18 06:52发布

问题:

In Swift, is it possible to set a max INT value to a UITextField?

My use-case is I have 5 text fields that need to have a maximum int value. These values range from 500 all the way to 10,000. Each of the 5 different text fields will have a different max. I can't use a picker or dropdown because the increments will be 1. And a UISlider will be way too tough to "scrub in" on the number.

If the max int value is 5,000, user can not type in (on the keyboard type of number pad) a value any higher than 5000.

Character count won't work, because if the max value is 500, if I set to 3 characters, user can type in 999.

回答1:

You can check if the current value in the text field is less than the maximum integer value you've specified:

(You might want to change the keyboard type to .NumberPad at this point to let user type only numeric values.)

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
}

I created an example project for you. You can download and play around with it.