我希望用户在从numberPad(没有小数点)的文本字段中输入时看到$和逗号。以前我得到了帮助并使用下面的代码。但客户端不会输入小数(仅限Int值)。
import { AppComponent } from './app.component';
键入时,它始终从第二个十进制单位开始,如何删除" .00"通过编辑代码并让它从单元开始?我试了很长时间,先谢谢了。
答案 0 :(得分:1)
首先,你得到了一些不好的建议。您不应该使用shouldChangeCharactersInRange
来更改文本字段中的字符。用于检查键入的字符是否对该字段有效。如果用户输入数字或删除,则此方法中唯一应该返回的是true,否则返回false。 (请记住,用户可能正在使用外部键盘,因此只需将键盘设置为不足以阻止非数字输入。)
相反,您应该使用与@IBAction
字段相关联的EditingChanged
。在此方法中,您应该更新文本。
@IBAction func editingChanged(sender: UITextField) {
let digits = sender.text?.digitsOnly ?? "0"
sender.text = "$\(digits).00" // If I understand what you want.
}
以下扩展名应位于代码库中的某处。它通常很有用,所以将它存放在一个要点或其他东西中,你可能在将来的项目中需要它。
extension String {
var digitsOnly: String {
return componentsSeparatedByCharactersInSet(NSCharacterSet.decimalDigitCharacterSet().invertedSet).joinWithSeparator("")
}
}
您必须确保IBAction附加到EditingChanged事件: