美文网首页
Mac开发|实现密码的显示与隐藏

Mac开发|实现密码的显示与隐藏

作者: Patrick_QiWei | 来源:发表于2021-11-11 10:28 被阅读0次

    想要实现这样一个NSTextField

    • 当选择了隐藏密码时,该文本框中的内容显示成NSSecureTextField的样子
    • 当选择不隐藏时,该文本框的内容按照标准NSTextField内容显示

    效果如图:
    当隐藏密码的时候:


    隐藏密码

    当不隐藏密码的时候:


    不隐藏密码

    实现

    其中NSTextField和NSSecureTextField重叠在一起,但是各自有不同的标识,分别为textPasswordsecurePassword.

    checkBox的动作绑定ifShowPassword,属性绑定showPasswordButton
    .h文件的代码如下:

    #import <Cocoa/Cocoa.h>
    
    @interface LoginView : NSViewController
    
    @property (weak) IBOutlet NSTextField *userText;
    @property (weak) IBOutlet NSSecureTextField *securePassword;
    @property (weak) IBOutlet NSButton *showPasswordButton;
    
    
    @property (weak) IBOutlet NSTextField *textPassword;
    - (IBAction)ifShowPassword:(NSButton *)sender;
    - (IBAction)login:(NSButton *)sender;
    
    @end
    

    .m文件的代码如下:
    首先会在View显示前,就将NSTextField:textPassword隐藏

    @implementation LoginView
    - (void)viewDidLoad {
        [super viewDidLoad];
        
        // Do view setup here.
        [self.textPassword setHidden:YES];
        [self.securePassword setHidden:NO];
    }
    
    - (IBAction)ifShowPassword:(NSButton *)sender {
        if (sender.state == NSControlStateValueOn) {
            self.textPassword.stringValue = self.securePassword.stringValue;
            [self.textPassword setHidden:NO];
            [self.securePassword setHidden:YES];
        } else {
            self.securePassword.stringValue = self.textPassword.stringValue;
            [self.textPassword setHidden:YES];
            [self.securePassword setHidden:NO];
        }
    }
    
    - (IBAction)login:(NSButton *)sender {
        NSString *passwordContent = @"";
        if (self.showPasswordButton.state == NSOnState) {
            passwordContent = self.textPassword.stringValue;
        } else {
            passwordContent = self.securePassword.stringValue;
        }
    }
    @end
    

    相关文章

      网友评论

          本文标题:Mac开发|实现密码的显示与隐藏

          本文链接:https://www.haomeiwen.com/subject/kvprsltx.html