【问题标题】:Auto Commas In UITextfield With Decimal Pad Keyboard [duplicate]带有小数点键盘的 UITextfield 中的自动逗号 [重复]
【发布时间】:2016-07-22 01:29:55
【问题描述】:

我正在使用具有小数键盘的 UITextField。所以用户只能输入数字。我希望文本字段自动为每千个用户类型添加逗号。这样用户就可以轻松识别他们正在输入多少。有没有一种通用的方法可以做到这一点?

【问题讨论】:

    标签: swift swift2 uitextfield


    【解决方案1】:

    here 是参考。下面是转换后的 swift 代码。将委托设置为 textField 并实现下面的委托方法。

    func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool {
    
        let cs = NSCharacterSet(charactersInString: "0123456789").invertedSet
        let filtered = string.componentsSeparatedByCharactersInSet(cs)
        let component = filtered.joinWithSeparator("")
        let isNumeric = string == component
    
        // check for input string is numeric value or either a number not a string or character.
        if isNumeric {
            let formatter = NSNumberFormatter()
            formatter.numberStyle = .DecimalStyle
            formatter.maximumFractionDigits = 10
    
            let newString = (textField.text! as NSString).stringByReplacingCharactersInRange(range, withString: string)
            let numberWithOutCommas = newString.stringByReplacingOccurrencesOfString(",", withString: "")
            let number = formatter.numberFromString(numberWithOutCommas)
            if number != nil {
                let formattedString = formatter.stringFromNumber(number!)
                print(number)
                print(formattedString)
                textField.text = formattedString
            } else {
                textField.text = nil
            }
        }
        return false
    }
    

    【讨论】:

      【解决方案2】:

      This 答案应该会有所帮助。他们在 shouldChangeCharactersInRange 方法中添加了逗号。 这是 swift 等价物

      let formatter = NSNumberFormatter()
      formatter.numberStyle = NSNumberFormatterStyle.DecimalStyle
      let formattedNum = formatter.stringFromNumber(10000000)
      textField.text = formattedNum
      

      【讨论】:

      • 我对 iOS 还很陌生。我不完全理解。为什么有10,000,000?我也尝试输入第二行代码,但 Xcode 没有接收到它。
      猜你喜欢
      • 2015-07-20
      • 1970-01-01
      • 2011-01-19
      • 2021-06-28
      • 2016-03-28
      • 2013-07-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多