有沒有辦法在cocoa中打開和關閉secureTextField? (OSX)。我希望用戶可以選擇查看他們的密碼。可可我可以隱藏/顯示NSTextField/NSSecureTextField
在iOS中,我可以做一些像[textField setSecureTextEntry:YES];
我發現[secureTextField setEchoBullets]但這不是我想要的。
任何幫助表示讚賞。
有沒有辦法在cocoa中打開和關閉secureTextField? (OSX)。我希望用戶可以選擇查看他們的密碼。可可我可以隱藏/顯示NSTextField/NSSecureTextField
在iOS中,我可以做一些像[textField setSecureTextEntry:YES];
我發現[secureTextField setEchoBullets]但這不是我想要的。
任何幫助表示讚賞。
我認爲你需要同時有NSTextField
和NSSecureTextField
。您可以將它們放在一張桌子NSTabView
中,以便在它們之間切換更容易一些。
對於我來說,完美的做法是在同一個NSTextField中有兩個不同的單元格並在它們之間切換。
void osedit_set_password_mode(OSEdit *edit, const bool_t password_mode)
{
OSXEdit *ledit = (OSXEdit*)edit;
cassert_no_null(ledit);
if (password_mode == TRUE)
{
if ([ledit cell] == ledit->cell)
{
[ledit->scell setStringValue:[ledit->cell stringValue]];
[ledit->scell setBackgroundColor:[ledit->cell backgroundColor]];
[ledit->scell setTextColor:[ledit->cell textColor]];
[ledit->scell setAlignment:[ledit->cell alignment]];
[ledit->scell setFont:[ledit->cell font]];
[ledit setCell:ledit->scell];
}
}
else
{
if ([ledit cell] == ledit->scell)
{
[ledit->cell setStringValue:[ledit->scell stringValue]];
[ledit->cell setBackgroundColor:[ledit->scell backgroundColor]];
[ledit->cell setTextColor:[ledit->scell textColor]];
[ledit->cell setAlignment:[ledit->scell alignment]];
[ledit->cell setFont:[ledit->scell font]];
[ledit setCell:ledit->cell];
}
}
}
接口
@interface OSXEdit : NSTextField
{
@public
NSTextFieldCell *cell;
NSSecureTextFieldCell *scell;
}
@end
構造
OSEdit *osedit_create()
{
OSXEdit *edit = nil;
NSTextFieldCell *cell = nil;
edit = [[OSXEdit alloc] initWithFrame:NSZeroRect];
cell = [edit cell];
[cell setEditable:YES];
[cell setSelectable:YES];
[cell setBordered:YES];
[cell setBezeled:YES];
[cell setDrawsBackground:YES];
edit->cell = [cell retain];
edit->scell = [[NSSecureTextFieldCell alloc] init];
[edit->scell setEchosBullets:YES];
[edit->scell setEditable:YES];
[edit->scell setSelectable:YES];
[edit->scell setBordered:YES];
[edit->scell setBezeled:YES];
[edit->scell setDrawsBackground:YES];
return (OSEdit*)edit;
}
和析構函數
void osedit_destroy(OSEdit *edit)
{
OSXEdit *ledit = (OSXEdit*)edit;
[ledit->cell release];
[ledit->scell release];
[ledit release];
}
這是非常奇怪的。但是,謝謝 - 我在Cocoa郵件列表上得到了同樣的答案。 –
我意識到我可以這樣做:1.只使用NSTextField,2. if(隱藏我)textField.stringValue = @「****** 「;有什麼我失蹤? –
我認爲這是更安全的解決方案:http://www.mikeabdullah.net/kspasswordfield.html –