У меня есть NSStatusItem, у которого есть NSMenuItem, который содержит пользовательский NSView.этот NSView содержит 3 подпредставления NSBox, которые можно активировать (реализовано событие mouseDown).Как ни странно, когда я запускаю приложение и вхожу в statusItem сразу после нажатия кнопки «Play», мне нужно щелкнуть NSBox только один раз (это возвращает clickCount = 1).Когда я вхожу в другое окно или представление и возвращаюсь к statusItem, и я пытаюсь щелкнуть один из NSBox, ничего не происходит.Когда я дважды щелкаю элементы, действия происходят, и clickCount также становится равным 1.
-(void)mouseDown:(NSEvent *)theEvent {
NSLog(@"ClickCount: %ld", theEvent.clickCount);
if ([delegate respondsToSelector:@selector(boxClicked:)]) {
[delegate boxClicked:self];
}
}
Кто-нибудь знает, почему это происходит и как я могу решить эту проблему?РЕДАКТИРОВАТЬ (полный код m-файла):
#import "ClickableBox.h"
@implementation ClickableBox
@synthesize delegate;
- (BOOL)acceptsFirstMouse:(NSEvent *)theEvent
{
return YES;
}
- (void)viewDidMoveToWindow {
[self addTrackingRect:[self bounds] owner:self userData:NULL assumeInside:NO];
}
-(void)mouseEntered:(NSEvent *)theEvent {
if ([delegate respondsToSelector:@selector(boxRolledOver:)]) {
[delegate boxRolledOver:self];
}
}
-(void)mouseExited:(NSEvent *)theEvent {
if ([delegate respondsToSelector:@selector(boxExited:)]) {
[delegate boxExited:self];
}
}
-(void)mouseDown:(NSEvent *)theEvent {
NSLog(@"ClickCount: %ld", theEvent.clickCount);
if ([delegate respondsToSelector:@selector(boxClicked:)]) {
[delegate boxClicked:self];
}
}
- (void)dealloc {
[delegate release];
[super dealloc];
}
@end