Allow only numbers for UITextField for iPad (Swift 4.x-5.x)

It’s easy for iPhone. Need only set it on your Storyboard:

numbers-iphone

But it doesn’t work for iPad. So, time for coding. Below is a solution to this problem for Swift 4.x-5.0 which I use in my application.

First of all, add UITextFieldDelegate here:

import UIKit
class ViewController: UIViewController, UITextFieldDelegate {
@IBOutlet weak var yourTextField: UITextField!

Delegate TextField:

override func viewDidLoad() {
  super.viewDidLoad()
  yourTextField.delegate = self
  ...

And finally implement it:

func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
guard CharacterSet(charactersIn: "0123456789").isSuperset(of: CharacterSet(charactersIn: string)) else {
  yourTextField.text = ""
  return false
}