如何自定义UITextField的数字input?
我的Storyboard中有一个UITextField
(代表一个小费值),起始$0.00
。 如果用户键入8
,我希望textField阅读$0.08
。 如果用户然后键入一个3
,我希望textField阅读$0.83
。 如果用户input5
,我希望textField阅读$8.35
。 我将如何去改变这种方式的input到UITextField
?
您可以通过以下四个步骤来执行此操作:
- 通过添加到
class
定义使您的viewControllerUITextFieldDelegate
。 - 通过从故事板中的
UITextField
进行控制 -复制,将IBOutlet
添加到您的textField中。 叫它myTextField
。 - 在
viewDidLoad()
,将viewController设置为textField的delegate
。 -
实现
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 } }