如何自定义UITextField的数字input?

我的Storyboard中有一个UITextField (代表一个小费值),起始$0.00 。 如果用户键入8 ,我希望textField阅读$0.08 。 如果用户然后键入一个3 ,我希望textField阅读$0.83 。 如果用户input5 ,我希望textField阅读$8.35 。 我将如何去改变这种方式的input到UITextField

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

  1. 通过添加到class定义使您的viewController UITextFieldDelegate
  2. 通过从故事板中的UITextField进行控制 -复制,将IBOutlet添加到您的textField中。 叫它myTextField
  3. viewDidLoad() ,将viewController设置为textField的delegate
  4. 实现textField:shouldChangeCharactersInRange:replacementString: 将传入的字符添加到提示中,然后使用String(format:)构造函数来格式化string。

     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 } }