У меня здесь проблема. Я создаю 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
.
И вот почему: как только окно открывается, область отслеживания считает, что моя мышь больше не находится над окном, потому что перед ним всплывающее окно. Однако, как только он удаляет всплывающее окно, он думает, что моя мышь снова над ним, создавая и показывая всплывающее окно еще раз. Таким образом, это бесконечный цикл.
У меня вопрос, есть ли способ обойти это, когда он не может закрыть окно, если моя мышь не находится за пределами и окна и всплывающего окна или чего-то подобного. Есть ли способ сделать это?