如何自定义UITextField的数字输入?

时间:2015-01-24 02:50:23

标签: ios swift uitextfield

我的故事板中有UITextField(代表小费值),最开始为$0.00。如果用户键入8,我希望textField读取$0.08。如果用户然后键入3,我希望textField读取$0.83。如果用户然后键入5,我希望textField读取$8.35。如何以这种方式将输入更改为UITextField

1 个答案:

答案 0 :(得分:3)

您可以通过以下四个步骤执行此操作:

  1. 通过将viewController添加到UITextFieldDelegate定义,使其成为class
  2. 通过 Control - 从故事板中的IBOutlet拖拽到您的代码,将UITextField添加到您的textField。称之为myTextField
  3. viewDidLoad()中,将viewController设置为textField的delegate
  4. 实施textField:shouldChangeCharactersInRange:replacementString:。 获取传入的字符并将其添加到提示,然后使用String(format:)构造函数格式化字符串。

    import UIKit
    
    class ViewController: UIViewController, UITextFieldDelegate {
    
        @IBOutlet weak var myTextField: UITextField!
    
        // Tip value in cents
        var tip: Int = 0
    
        override func viewDidLoad() {
            super.viewDidLoad()
            myTextField.delegate = self
            myTextField.text = "$0.00"
        }
    
        func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool {
            if let digit = Int(string) {
                tip = tip * 10 + digit
                textField.text = String(format:"$%d.%02d", tip/100, tip%100)
            }
            return false
        }
    }