Cocoa Can I hide / show NSTextField / NSSecureTextField

Is there a way to enable and disable secureTextField in Cocoa? (OSX). I would like users to be able to see their passwords.

In iOS, I can do something like [textField setSecureTextEntry: YES];

I found [secureTextField setEchoBullets], but that is not what I want.

Any help appreciated.

+3
source share
2 answers

I think you'll need NSTextField, as well NSSecureTextField. You can put them on a netbook NSTabViewto make it easier to switch between them.

+3
source

It works great for me to have two different cells in the same NSTextField and switch between them.

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

@interface OSXEdit : NSTextField 
{
    @public
    NSTextFieldCell *cell;
    NSSecureTextFieldCell *scell;
}
@end

Constructor

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;
}

And destructor

void osedit_destroy(OSEdit *edit)
{
    OSXEdit *ledit = (OSXEdit*)edit;
    [ledit->cell release];
    [ledit->scell release];
    [ledit release];
}
0
source

All Articles