How to restrict UITextField to take only numbers in Swift?

后端 未结 30 914
难免孤独
难免孤独 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:17

    Dead simple solution for Double numbers (keep it mind that this is not the best user-friendly solution), in your UITextFieldDelegate delegate:

    func textField(_ textField: UITextField,
                   shouldChangeCharactersIn range: NSRange,
                   replacementString string: String) -> Bool {
            guard let currentString = textField.text as NSString? else {
                return false
            }
            let newString = currentString.replacingCharacters(in: range, with: string)
            return Double(newString) != nil
    }
    

提交回复
热议问题