下面是PasswordFormatter的代码,它不允许空格和最大长度为15.当输入字符串并且它们试图单击其他文本字段时它不会移动,光标停留在相同的密码字段。
import Cocoa
class PasswordFormatter: Formatter {
var maxLength:Int = 15
override func string(for obj: Any?) -> String? {
if obj is String{
return obj as? String
}
else
{
return nil
}
}
override func getObjectValue(_ obj: AutoreleasingUnsafeMutablePointer<AnyObject?>?, for string: String, errorDescription error: AutoreleasingUnsafeMutablePointer<NSString?>?) -> Bool {
print("string is...\(string)")
obj?.pointee = string as AnyObject
return false
}
override func editingString(for obj: Any) -> String? {
if obj is String{
return obj as? String
}
else
{
return nil
}
}
override func isPartialStringValid(_ partialString: String, newEditingString newString: AutoreleasingUnsafeMutablePointer<NSString?>?, errorDescription error: AutoreleasingUnsafeMutablePointer<NSString?>?) -> Bool {
if partialString.characters.count > maxLength
{
return false;
}
if partialString.rangeOfCharacter(from: NSCharacterSet.whitespacesAndNewlines) != nil
{
return false
}
// Ability to reset your field (otherwise you can't delete the content)
// You can check if the field is empty later
if partialString.isEmpty {
return true
}
// Actual check
return true
}
}
使用自定义格式化程序时不确定确切的问题。