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重置为零。