У меня есть 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