想要实现这样一个NSTextField
- 当选择了隐藏密码时,该文本框中的内容显示成NSSecureTextField的样子
- 当选择不隐藏时,该文本框的内容按照标准NSTextField内容显示
效果如图:
当隐藏密码的时候:
隐藏密码
当不隐藏密码的时候:
不隐藏密码
实现
其中NSTextField和NSSecureTextField重叠在一起,但是各自有不同的标识,分别为textPassword
和securePassword
.
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
网友评论