Вы можете использовать свойство NSWindow keyWindow
, и если вы хотите проверить, является ли ваш элемент управления первым респондентом для событий клавиатуры, также протестируйте [[self window] firstResponder] == self
.Я не верю, что keyWindow
поддерживает KVO, но есть NSWindowDidBecomeKeyNotification
и NSWindowDidResignKeyNotification
, которые вы можете прослушать.Например,
- (id)initWithFrame:(NSRect)frameRect;
{
if ( self = [super initWithFrame:frameRect] )
{
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(display) name:NSWindowDidResignKeyNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(display) name:NSWindowDidBecomeKeyNotification object:nil];
}
return self;
}
- (void)drawRect:(NSRect)aRect;
{
if ( [[self window] isKeyWindow] )
{
// one way...
}
else
{
// another way!
}
}
- (void)dealloc;
{
[[NSNotificationCenter defaultCenter] removeObserver:self name:NSWindowDidResignKeyNotification object:nil];
[[NSNotificationCenter defaultCenter] removeObserver:self name:NSWindowDidBecomeKeyNotification object:nil];
[super dealloc];
}