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

想要实现这样一个NSTextField

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

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


隐藏密码

当不隐藏密码的时候:


不隐藏密码

实现

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

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

#import 

@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开发|实现密码的显示与隐藏)