自定义格式化程序不允许将焦点移动到其他文本字段

时间:2017-06-28 13:00:59

标签: macos cocoa

下面是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
}
}

使用自定义格式化程序时不确定确切的问题。

0 个答案:

没有答案