简体   繁体   中英

How to limit text field entry to a certain range of numbers in Swift

enter image description here I have managed to prevent the user from entering more than 2 digits in the 'month' field, using a text delegate function:

Swift code

However, I also want to prevent the user entering a number greater than 12. Can anyone point me in the right direction?

Thanks!

使用&&运算符在return条件中添加Int(myString) < 13

in didload

txt_field.delegate=self
txt_field.addTarget(self, action:"submit:", forControlEvents: UIControlEvents.EditingChanged)

then define "submit" method as

   @IBAction func submit(sender: AnyObject) {
    let a:Int? = txt_field.text.toInt()
    if a > 12{
        print("number is greater than 12")
    }
    else{
        print("number is less than 12")
    }  
}

"submit" method is called each time user stops editing the textfield. Hence you can check what user is entering and prevent him from entering value greater than 12.

Hope it helps. Happy Coding.

textEdit.delegate = self from your view controllar

extension UserProfileViewController: UITextFieldDelegate {

func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {

    let numberFiltered = string.components(separatedBy: NSCharacterSet(charactersIn: "0123456789").inverted).joined(separator: "")

    guard string == numberFiltered, range.location < 2 else {
        return false
    }

    if let newValue = textField.text?.intValue, let currentValue = string.intValue {
        let totalValue = newValue*10 + currentValue

        switch totalValue {
        case 16..<80:
            return true
        default:
            textField.text = ""
            return false
        }
    }
    return true
} }

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM