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

想要实现这样一个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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容