Как я могу быть замечен, когда подкласс NSSecureTextField получает фокус каждый раз?

Я подкласс NSSecureTextFieldи переопределено -(BOOL)becomeFirstResponder, но это работает только тогда, когда мой заказ NSSecureTextField получить фокус в первый раз.

1 ответ

Я думаю, что это не проблема NSSecureTextField. Это проблема того, как сфокусироваться на контроле.

Создайте новый проект и перетащите только два NSSecureTextField на ваш вид. Установите пользовательский класс одного из них в MySecureTextField, определенный ниже, и оставьте другой по умолчанию. Запустите проект и измените фокус между двумя NSSecureTextField, вы увидите "Get focus", напечатанный, когда пользовательский фокус получится каждый раз.

Вернитесь к своей программе, пожалуйста, проверьте, не потерял ли фокус 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
Другие вопросы по тегам