一尘不染

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

swift

我试图快速制作一个文本字段,该文本字段将允许启用按钮,但前提是该文本字段包含整数。我怎样才能做到这一点?


阅读 246

收藏
2020-07-07

共1个答案

一尘不染

  1. UITextFieldDelegate通过添加UITextFieldDelegate到类声明,使您的视图控制器成为a 。
  2. 添加IBOutlet是为了你们的文本字段,你的按钮。
  3. viewDidLoad中将按钮的isEnabled属性false设置self为,并设置为textField.delegate
  4. 实现textField:shouldChangeCharactersInRange:replacementString:方法。每次编辑文本字段时都会调用此方法。在其中,Int通过调用Int(text)并根据需要启用/禁用按钮来检查当前文本字段是否转换为。

这是代码:

class ViewController : UIViewController, UITextFieldDelegate {

    @IBOutlet weak var textField: UITextField!
    @IBOutlet weak var button: UIButton!

    override func viewDidLoad() {
        super.viewDidLoad()
        button.isEnabled = false
        textField.delegate = self
        textField.keyboardType = .numberPad
    }

    func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool {
        // Find out what the text field will be after adding the current edit
        let text = (textField.text as NSString).stringByReplacingCharactersInRange(range, withString: string)

        if Int(text) != nil {
            // Text field converted to an Int
            button.isEnabled = true
        } else {
            // Text field is not an Int
            button.isEnabled = false
        }

        // Return true so the text field will be changed
        return true
    }
}
2020-07-07