|
@ -11,7 +11,6 @@ import RxSwift |
|
|
import RxCocoa |
|
|
import RxCocoa |
|
|
|
|
|
|
|
|
public enum GMEKeyboardType: String { |
|
|
public enum GMEKeyboardType: String { |
|
|
case uppercaseAlphabet = "UA" |
|
|
|
|
|
case alphabet = "A" |
|
|
case alphabet = "A" |
|
|
case alphabetNumberic = "AN" |
|
|
case alphabetNumberic = "AN" |
|
|
case alphabetNumbericSpecial = "ANS" |
|
|
case alphabetNumbericSpecial = "ANS" |
|
@ -19,15 +18,16 @@ public enum GMEKeyboardType: String { |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
extension UITextField { |
|
|
extension UITextField { |
|
|
func filterBy(type: GMEKeyboardType, isSendAction: Bool = true) { |
|
|
|
|
|
|
|
|
func filterBy(type: GMEKeyboardType, isSendAction: Bool = true, isUppercase: Bool = false) { |
|
|
|
|
|
|
|
|
let extractText: String? |
|
|
let extractText: String? |
|
|
|
|
|
|
|
|
|
|
|
let value = isUppercase ? text?.uppercased() : text |
|
|
|
|
|
|
|
|
switch type { |
|
|
switch type { |
|
|
case .uppercaseAlphabet: extractText = text?.uppercased().extract(regex: "[A-Z\\s]") |
|
|
|
|
|
case .alphabet: extractText = text?.extract(regex: "[A-Za-z\\s]") |
|
|
|
|
|
case .alphabetNumberic: extractText = text?.extract(regex: "[A-Z0-9a-z\\s]") |
|
|
|
|
|
case .alphabetNumbericSpecial: extractText = text?.filter { $0.isASCII } |
|
|
|
|
|
|
|
|
case .alphabet: extractText = value?.extract(regex: "[A-Za-z\\s]") |
|
|
|
|
|
case .alphabetNumberic: extractText = value?.extract(regex: "[A-Z0-9a-z\\s]") |
|
|
|
|
|
case .alphabetNumbericSpecial: extractText = value?.filter { $0.isASCII } |
|
|
case .numberic: extractText = text?.extract(regex: "[0-9]") |
|
|
case .numberic: extractText = text?.extract(regex: "[0-9]") |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
@ -128,10 +128,10 @@ extension UITextField { |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
extension Reactive where Base: UITextField { |
|
|
extension Reactive where Base: UITextField { |
|
|
public func filterBy(_ type: GMEKeyboardType) -> Disposable { |
|
|
|
|
|
|
|
|
public func filterBy(_ type: GMEKeyboardType, isUppercase: Bool = false) -> Disposable { |
|
|
let disposable = self.base.rx.controlEvent(.editingChanged) |
|
|
let disposable = self.base.rx.controlEvent(.editingChanged) |
|
|
.subscribe(onNext: { |
|
|
.subscribe(onNext: { |
|
|
self.base.filterBy(type: type) |
|
|
|
|
|
|
|
|
self.base.filterBy(type: type, isUppercase: isUppercase) |
|
|
}) |
|
|
}) |
|
|
return disposable |
|
|
return disposable |
|
|
} |
|
|
} |
|
|