Ios 如何自定义UITextField的数字输入?
我的故事板中有一个Ios 如何自定义UITextField的数字输入?,ios,swift,uitextfield,Ios,Swift,Uitextfield,我的故事板中有一个UITextField(表示提示值),它以$0.00开始。如果用户键入8,则我希望文本字段读取$0.08。如果用户随后键入一个3,我希望文本字段的值为$0.83。如果用户随后键入5,则我希望文本字段读取$8.35。如何以这种方式将输入更改为UITextField?您可以通过以下四个步骤完成此操作: 将viewController添加到类定义中,使其成为UITextFieldDelegate 通过将脚本中的UITextField控件拖动到代码中,将IBOutlet添加到文本字段。
UITextField
(表示提示值),它以$0.00开始。如果用户键入8
,则我希望文本字段读取$0.08
。如果用户随后键入一个3
,我希望文本字段的值为$0.83
。如果用户随后键入5
,则我希望文本字段读取$8.35
。如何以这种方式将输入更改为UITextField
?您可以通过以下四个步骤完成此操作:
将viewController添加到类
定义中,使其成为UITextFieldDelegate
通过将脚本中的UITextField
控件拖动到代码中,将IBOutlet
添加到文本字段。称之为myTextField
在viewDidLoad()
中,将viewController设置为文本字段的委托
实现textField:shouldChangeCharactersRange:replacementString:
。
获取传入字符并将其添加到提示中,然后使用字符串(格式:)
构造函数格式化字符串
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
}
}
为什么这个问题看起来和一个小时前问的一样?因为我在回答那个用户的问题,正要发帖时,他们被恐吓并删除了他们的问题。在我看来,他们的问题非常清楚。如果你不这么认为,我很抱歉,但我不喜欢看到新用户被恐吓而不是被温和地引导。所以,关于帮助编写代码,应该尝试一下,这就是学习的方式。当我按backspace或delete时,它就不起作用了。另外,若我清除了textfield,那个么它仍然会从最后一点继续运行,除非我将tip重置为零。