如何声明文本字段只能包含整数?

2024-05-11

在 swift 中,我试图创建一个文本字段,该文本字段将允许启用按钮,但仅当文本字段包含整数时。我怎样才能做到这一点?


两件事情:

  1. 指定键盘类型以仅显示数字键盘。所以,设置keyboardType to .numberPad。然而,这还不足以阻止用户在文本字段中输入无效字符。例如,用户在使用 iPad 时仍然可以粘贴文本或切换键盘。

  2. 指定文本字段的委托并实现shouldChangeCharactersInRange不接受除数字之外的任何字符0 though 9:

    class ViewController: UIViewController, UITextFieldDelegate {
    
        @IBOutlet weak var textField: UITextField!
    
        override func viewDidLoad() {
            super.viewDidLoad()
    
            // you can set the following two properties for the text field in Interface Builder, if you'd prefer
    
            textField.delegate = self
            textField.keyboardType = .numberPad
        }
    
        func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
            let invalidCharacters = CharacterSet(charactersIn: "0123456789").inverted
            return string.rangeOfCharacter(from: invalidCharacters) == nil
        }
    
        // or, alternatively:
        //
        // func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool {
        //     return string.range(of: "^\\d*$", options: .regularExpression) != nil
        // }
    
    }
    

对于 Swift 2 的演绎,请参阅此答案的先前版本。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何声明文本字段只能包含整数? 的相关文章

随机推荐