Я думаю, что мою проблему лучше всего описать в видео: http://cl.ly/5Iou
По сути, я создаю область отслеживания в моем окне следующим образом:
NSTrackingArea *area = [[NSTrackingArea alloc] initWithRect:[self frame] options:NSTrackingMouseEnteredAndExited | NSTrackingActiveAlways owner:self userInfo:nil];
[self addTrackingArea:area];
[area release];
Затем яРеализовано:
-(void)mouseEntered:(NSEvent *)event {
[self toggleDetail];
}
-(void)mouseExited:(NSEvent *)event {
[self toggleDetail];
}
И в awakeFromNib
я положил это:
[attachedWindow setIgnoresMouseEvents:YES];
toggleDetail
выглядит примерно так: (всплывающее окно MAAttachedWindow
)
- (void)toggleDetail {
if (!attachedWindow) {
NSPoint buttonPoint = NSMakePoint(NSMidX([conditionImage frame]),
NSMidY([conditionImage frame]));
attachedWindow = [[MAAttachedWindow alloc] initWithView:view
attachedToPoint:buttonPoint
inWindow:[self window]
onSide:12
atDistance:65.0];
//irrelevant window setup here
[[self window] addChildWindow:attachedWindow ordered:NSWindowAbove];
}
else {
[[self window] removeChildWindow:attachedWindow];
[attachedWindow orderOut:self];
[attachedWindow release];
attachedWindow = nil;
}
}
Итак, как вы можете видеть на видео, «пульсация» не произойдет, если я наведу указатель мыши на окно подальше от окна, а затем наведу курсор на всплывающее окно.Однако, если я наведу курсор мыши на общую область, где появится всплывающее окно, а затем наведу курсор мыши на окно, оно начнет пульсировать.Похоже, окно не успевает зарегистрироваться, чтобы не получать события мыши.Есть идеи?Я пришел в себя, пытаясь обойти это.