ios - 在文本字段中快速添加逗号作为用户输入

标签 ios swift

我有一个输入文本,用户可以在其中输入金额。我现在遇到的问题是,如果用户输入值 1000 我希望它在文本字段中显示为 1,000 并且当我想获取 的值时code>textField,我希望能够返回 1000。我怎样才能实现这一点,因为我尝试过的代码只能帮助打印 1,000

中的值
extension Formatter {
    static let withSeparator: NumberFormatter = {
        let formatter = NumberFormatter()
        formatter.groupingSeparator = ","
        formatter.numberStyle = .decimal
        return formatter
    }()
}

extension Integer{    
    var formattedWithSeparator: String {
        return Formatter.withSeparator.string(for: self) ?? ""
    }
}

let myInt = 1234500
let myIntString = myInt.formattedWithSeparator  // "1,234,500"

最佳答案

使用这个代码你会得到它

导入 UIKit

class IntegerField: UITextField {
    var lastValue = 0
    let maxValue = 1_000_000_000
    var amount: Int {
        if let newValue = Int(string.digits), newValue < maxValue {
            lastValue = newValue
        } else if !hasText {
            lastValue = 0
        }
        return lastValue
    }
    override func didMoveToSuperview() {
        textAlignment = .right
        keyboardType = .numberPad
        text = Formatter.decimal.string(for: amount)
        addTarget(self, action: #selector(editingChanged), for: .editingChanged)
    }
    @objc func editingChanged(_ textField: UITextField) {
        text = Formatter.decimal.string(for: amount)
    }
}

extension NumberFormatter {
    convenience init(numberStyle: Style) {
        self.init()
        self.numberStyle = numberStyle
    }
}
struct Formatter {
    static let decimal = NumberFormatter(numberStyle: .decimal)
}
extension UITextField {
    var string: String { return text ?? "" }
}

extension String {
    private static var digitsPattern = UnicodeScalar("0")..."9"
    var digits: String {
        return unicodeScalars.filter { String.digitsPattern ~= $0 }.string
    }
}

extension Sequence where Iterator.Element == UnicodeScalar {
    var string: String { return String(String.UnicodeScalarView(self)) }
}

关于ios - 在文本字段中快速添加逗号作为用户输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53849272/

相关文章:

ios - 将字典发送到核心数据

ios - 试图画一个实心圆但它有黑色背景

iphone - MFMessageComposeViewController 继续之前的对话

ios - 如何以编程方式打开 Apple Reminders 应用程序?

c# - 如何在 ios 上将 wav 音频转换为 mp3/ogg?

iphone - 使用 NSURLConnection 和 NSURLProtectionSpace 确定信任

ios - Xcode 6 从 UIViewController 访问 UIApplication

uitableview - 意外的表重新加载/刷新有些延迟

swift - 在 swift/spritekit 中摆脱图像帧

swift - UIImagePickerController didFinishPickingImage 不在 Swift 3 中调用