我的故事板中有UITextField
(代表小费值),最开始为$0.00
。如果用户键入8
,我希望textField读取$0.08
。如果用户然后键入3
,我希望textField读取$0.83
。如果用户然后键入5
,我希望textField读取$8.35
。如何以这种方式将输入更改为UITextField
?
答案 0 :(得分:3)
您可以通过以下四个步骤执行此操作:
UITextFieldDelegate
定义,使其成为class
。IBOutlet
拖拽到您的代码,将UITextField
添加到您的textField。称之为myTextField
。viewDidLoad()
中,将viewController设置为textField的delegate
。实施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
}
}