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

标签 text swift int uitextfield textfield

在 swift 中,我正在尝试制作一个允许启用按钮的文本字段,但仅当文本字段包含整数时。我该怎么做?

最佳答案

两件事:

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

  2. 指定文本字段的委托(delegate)并实现 shouldChangeCharactersInRange,它将不接受除数字 09 以外的任何字符:

    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 版本,请参阅此答案的先前修订版。

关于text - 如何声明文本字段只能包含整数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26919854/

相关文章:

jquery - 从元素中获取数字并用 span 换行

java - 干净地排列输出

swift - 将数据从 Firebase 传输到自定义信息窗口

python - long() 的 pandas 无效文字,基数为 10 错误

html - CSS 自动换行 : break-word not wrapping a tag unless you wrap it in div and add rule there

c - C 中有类似 "Beginning of file"的东西吗?

ios - 从 AppDelegate 到 PresentedViewController 的警报 : "Attempt to present UIAlertController on ... whitch is already presenting UIAlertController"

ios - arc4random_uniform 在 OSX 10.10.4 上的 Xcode 7.0 beta (7a176x) 中不可用

c - 在 C 中使用无符号数据类型

java - 如何从InputStreamReader读取整数