How to restrict UITextField to take only numbers in Swift?

后端 未结 30 931
难免孤独
难免孤独 2020-12-04 08:40

I want the user to only enter numeric values in a UITextField. On iPhone we can show the numeric keyboard, but on iPad the user can switch to any keyboard.

30条回答
  •  心在旅途
    2020-12-04 09:15

    1st you have to inherit the UITextFieldDelegate class with you own class

    class ViewController: UIViewController, UITextFieldDelegate {
    

    2nd add an IBOutlet

    @IBOutlet weak var firstName: UITextField!
    

    3rd you have to assure this object is using

    override func viewDidLoad() {
            super.viewDidLoad()
       firstName.delegate = self
    }
    
    
    func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
        if textField == firstName {
                    let allowedCharacters = "1234567890"
                    let allowedCharacterSet = CharacterSet(charactersIn: allowedCharacters)
                    let typedCharacterSet = CharacterSet(charactersIn: string)
                    let alphabet = allowedCharacterSet.isSuperset(of: typedCharacterSet)
                    return alphabet
    
    
          }
      }
    

提交回复
热议问题