Ios Swift:如何删除NSNumberFormatter的.00?
有人帮助我使文本字段显示逗号和$,但每当有.00尾随数字时,即使我删除文本字段中的所有内容。如果有人只键入整数或什么都不键入,如何删除该选项?非常感谢Ios Swift:如何删除NSNumberFormatter的.00?,ios,swift,uitextfield,nsnumberformatter,Ios,Swift,Uitextfield,Nsnumberformatter,有人帮助我使文本字段显示逗号和$,但每当有.00尾随数字时,即使我删除文本字段中的所有内容。如果有人只键入整数或什么都不键入,如何删除该选项?非常感谢 func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool { let oldText = textField.text! as NSStr
func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool {
let oldText = textField.text! as NSString
var newText = oldText.stringByReplacingCharactersInRange(range, withString: string) as NSString!
var newTextString = String(newText)
let digits = NSCharacterSet.decimalDigitCharacterSet()
var digitText = ""
for c in newTextString.unicodeScalars {
if digits.longCharacterIsMember(c.value) {
digitText.append(c)
}
}
let formatter = NSNumberFormatter()
// formatter.usesSignificantDigits = false
formatter.numberStyle = NSNumberFormatterStyle.CurrencyStyle
formatter.locale = NSLocale(localeIdentifier: "en_US")
let numberFromField = (NSString(string: digitText).doubleValue) / 100
newText = formatter.stringFromNumber(numberFromField)
textField.text = String(newText)
return false
}
设置NSNumberFormatter()的minimumFractionDigits和maximumFractionDigits:: 试试这个
func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool {
let oldText = textField.text! as NSString
var newText = oldText.stringByReplacingCharactersInRange(range, withString: string) as NSString!
var newTextString = String(newText)
let digits = NSCharacterSet.decimalDigitCharacterSet()
var digitText = ""
for c in newTextString.unicodeScalars {
if digits.longCharacterIsMember(c.value) {
digitText.append(c)
}
}
let formatter = NSNumberFormatter()
// formatter.usesSignificantDigits = false
formatter.numberStyle = NSNumberFormatterStyle.CurrencyStyle
formatter.locale = NSLocale(localeIdentifier: "en_US")
let numberFromField = (NSString(string: digitText).doubleValue) / 100
newText = formatter.stringFromNumber(numberFromField)
if newText .isEqualToString("$0.00") {
newText = ""
}
textField.text = String(newText)
return false
}
我刚才补充说,
if newText .isEqualToString("$0.00") {
newText = ""
}
用你的方法
更新:(如评论中所问)
用下面的方法替换你的方法非常简单
func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool {
let oldText = textField.text! as NSString
var newText = oldText.stringByReplacingCharactersInRange(range, withString: string) as NSString!
var newTextString = String(newText)
let digits = NSCharacterSet.decimalDigitCharacterSet()
var digitText = ""
for c in newTextString.unicodeScalars {
if digits.longCharacterIsMember(c.value) {
digitText.append(c)
}
}
// let formatter = NSNumberFormatter()
// formatter.usesSignificantDigits = false
// formatter.numberStyle = NSNumberFormatterStyle.CurrencyStyle
// formatter.locale = NSLocale(localeIdentifier: "en_US")
let numberFromField = (NSString(string: digitText).intValue)
newText = NSString.localizedStringWithFormat("$%d", numberFromField)
// if newText .isEqualToString("$0.00") {
//
// newText = ""
//
// }
textField.text = String(newText)
return false
}
如果我设置了,我就不能在文本字段中输入。嗨,那很好。当我键入一个整数并最终删除小数部分时怎么样?如果我想键入100,文本字段将显示$100.00,如何将其转换为$100。
func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool {
let oldText = textField.text! as NSString
var newText = oldText.stringByReplacingCharactersInRange(range, withString: string) as NSString!
var newTextString = String(newText)
let digits = NSCharacterSet.decimalDigitCharacterSet()
var digitText = ""
for c in newTextString.unicodeScalars {
if digits.longCharacterIsMember(c.value) {
digitText.append(c)
}
}
// let formatter = NSNumberFormatter()
// formatter.usesSignificantDigits = false
// formatter.numberStyle = NSNumberFormatterStyle.CurrencyStyle
// formatter.locale = NSLocale(localeIdentifier: "en_US")
let numberFromField = (NSString(string: digitText).intValue)
newText = NSString.localizedStringWithFormat("$%d", numberFromField)
// if newText .isEqualToString("$0.00") {
//
// newText = ""
//
// }
textField.text = String(newText)
return false
}