|
@@ -47,3 +47,31 @@ class KMBaseTextFormatter: NumberFormatter {
|
|
|
return nil
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+class KMCSTextFormatter: NumberFormatter {
|
|
|
+
|
|
|
+ override func isPartialStringValid(_ partialStringPtr: AutoreleasingUnsafeMutablePointer<NSString>, proposedSelectedRange proposedSelRangePtr: NSRangePointer?, originalString origString: String, originalSelectedRange origSelRange: NSRange, errorDescription error: AutoreleasingUnsafeMutablePointer<NSString?>?) -> Bool {
|
|
|
+
|
|
|
+ var partialString = partialStringPtr.pointee
|
|
|
+ if partialString.debugDescription.isEmpty {
|
|
|
+ return true
|
|
|
+ }
|
|
|
+
|
|
|
+ var regex: NSString = "^[0123456789.%]*$"
|
|
|
+
|
|
|
+ let predicate = NSPredicate.init(format: "SELF MATCHES %@", regex)
|
|
|
+ if !predicate.evaluate(with: partialString) {
|
|
|
+ return false
|
|
|
+ }
|
|
|
+
|
|
|
+ let newRange: NSRange = proposedSelRangePtr!.pointee
|
|
|
+ if (NSMaxRange(origSelRange) > NSMaxRange(newRange)) {
|
|
|
+ return true
|
|
|
+ }
|
|
|
+ return true
|
|
|
+ }
|
|
|
+
|
|
|
+ override func attributedString(for obj: Any, withDefaultAttributes attrs: [NSAttributedString.Key : Any]? = nil) -> NSAttributedString? {
|
|
|
+ return nil
|
|
|
+ }
|
|
|
+}
|