当子类NSSecureTextField每次获得焦点时,我怎么才能注意到?

时间:2013-09-25 05:43:46

标签: objective-c macos cocoa nstextfield becomefirstresponder

我已将NSSecureTextField分组,并覆盖了-(BOOL)becomeFirstResponder,但只有在我的自定义NSSecureTextField第一次获得焦点时,它才有效。

1 个答案:

答案 0 :(得分:0)

我认为这不是NSSecureTextField的问题。这是控制如何集中的问题。

创建一个新项目,只在视图上拖动两个NSSecureTextField。将其中一个的自定义类设置为下面定义的MySecureTextField,并保持另一个默认值。运行项目并在两个NSSecureTextField之间更改焦点,每次自定义焦点时,您将看到打印“获取焦点”。

返回您的程序,请检查NSSecureTextField是否失去焦点? resignFirstResponser是否被调用?

#import "MySecureTextField.h"

@implementation MySecureTextField

- (id)initWithFrame:(NSRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {
        // Initialization code here.
    }

    return self;
}

- (void)drawRect:(NSRect)dirtyRect
{
    // Drawing code here.
}

- (BOOL)becomeFirstResponder
{
    NSLog(@"Get focus");
    return [super becomeFirstResponder];
}
@end