У меня проблема. Я создаю NSTrackingArea
следующим образом:
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];
}
А toggleDetail
в основном выглядит так:
- (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:10.0];
//config removed because of irrelevance
[[self window] addChildWindow:attachedWindow ordered:NSWindowAbove];
} else {
[[self window] removeChildWindow:attachedWindow];
[attachedWindow orderOut:self];
[attachedWindow release];
attachedWindow = nil;
}
}
Вот моя проблема. Когда мое MAAttachedWindow
закрывается, и я наводил указатель мыши на окно, оно открывается. Денди. Однако это хорошо только тогда, когда я держу мышь подальше от MAAttachedWindow
. Как только я наведу на него указатель мыши (все еще находясь над главным окном), он начинает резко открывать и закрывать MAAttachedWindow
.
Вот почему: как только окно открывается, область отслеживания считает, что моя мышь больше не находится над окном, потому что всплывающее окно находится перед ним. Однако, как только он удаляет всплывающее окно, он думает, что моя мышь снова над ним, таким образом создавая и показывая всплывающее окно еще раз. Таким образом, это бесконечный цикл.
Мой вопрос: есть ли способ обойти это? где он не может закрыть окно, если моя мышь не находится вне как окна, так и всплывающего окна или чего-то подобного. Есть ли способ сделать это?