我已经找到了很多关于如何在Objective-C中执行此操作的指南,但是我希望看到一种更加面向Swift的方法。
我有一个UITextField,用户可以在其中输入货币价格。文本字段将调用小数键盘。但是,在iPad上,出现的键盘具有整个范围的非十进制符号。
基本上,对于每一次按键,我都希望不可能在该字段中键入非数字或超出单个小数的任何内容。如果键入了一个十进制,我想使其不可能输入第二个十进制。如果删除了小数点,我想确保用户可以再次输入小数点。
关于如何迅速正确地执行此操作的任何想法?
但是我不知道该在哪里放置这些函数或如何调用它们。每当我尝试在参数中放入NSRange时,都会收到错误消息,提示我未正确创建范围。
这是一个简单的示例:
import UIKit class ViewController: UIViewController, UITextFieldDelegate { @IBOutlet weak var textField: UITextField! override func viewDidLoad() { super.viewDidLoad() self.textField.delegate = self } //Textfield delegates func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool { // return NO to not change text switch string { case "0","1","2","3","4","5","6","7","8","9": return true case ".": let array = Array(textField.text) var decimalCount = 0 for character in array { if character == "." { decimalCount++ } } if decimalCount == 1 { return false } else { return true } default: let array = Array(string) if array.count == 0 { return true } return false } } }