ios - 如何在 alert.addTextfield 中放置 $ 硬币掩码?
问题描述
如何在 alert.addTextfield 中放置 $ 硬币掩码?货币 ?与文本字段有关吗? https://code.i-harness.com/en/q/1c673c6
func showalert(with marcas: Marcas?){
let title = marcas == nil ? "Adicionar" : "Editar"
let alert = UIAlertController(title: title + " Marca", message: nil, preferredStyle: .alert)
alert.addTextField { (textField) in textField.placeholder = "Nome da Marca"
if let name = marcas?.nome {
textField.text = name
}
}
alert.addTextField { (textFieldValor) in textFieldValor.placeholder = "Preço"
if let valor = marcas?.valor {
textFieldValor.text = valor
}
}
解决方案
textFieldValor.addTarget(self, action: #selector(self.myTextFieldDidChange), for: .editingChanged)
@objc func myTextFieldDidChange(_ textField: UITextField) {
if let amountString = textField.text?.currencyInputFormatting() {
textField.text = amountString
}
}
extension String {
// formatting text for currency textField
func currencyInputFormatting() -> String {
var number: NSNumber!
let formatter = NumberFormatter()
formatter.numberStyle = .currencyAccounting
formatter.currencySymbol = "R$"
formatter.maximumFractionDigits = 2
formatter.minimumFractionDigits = 2
var amountWithPrefix = self
// remove from String: "$", ".", ","
let regex = try! NSRegularExpression(pattern: "[^0-9]", options: .caseInsensitive)
amountWithPrefix = regex.stringByReplacingMatches(in: amountWithPrefix, options: NSRegularExpression.MatchingOptions(rawValue: 0), range: NSMakeRange(0, self.characters.count), withTemplate: "")
let double = (amountWithPrefix as NSString).doubleValue
number = NSNumber(value: (double / 100))
// if first number is 0 or all numbers were deleted
guard number != 0 as NSNumber else {
return ""
}
return formatter.string(from: number)!
}
}
推荐阅读
- python - 如何将 Bokeh 交互式地图放在网站上?
- sql - SSIS 包在 SSDT 中运行良好,但在 SQL Server 代理作业中引发错误
- javascript - 当鼠标指向React Jsx中的相邻元素时,使悬停效果粘在元素中
- csvhelper - 上传后使用块和删除文件时封闭 csv.Reader 的问题
- excel - AutoHotKey - 如何获取列中最后使用的行的行号(自下而上)?
- node.js - Express:从 Content-Type "application/json; charset=utf-8" 中删除 charset=utf-8
- r - 进行方差测试时出错
- java - 为什么我在java中陷入了一个超长的for循环?
- javascript - 您托管的文件上的浏览器缓存
- c# - 将图标附加到 listView 中的日期字符串格式