Ios Swift:如何删除NSNumberFormatter的.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

有人帮助我使文本字段显示逗号和$,但每当有.00尾随数字时,即使我删除文本字段中的所有内容。如果有人只键入整数或什么都不键入,如何删除该选项?非常感谢

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

}