Я пытаюсь установить NSTrackingArea в полноэкранный режим, чтобы получать события с перемещением мыши.NSTrackingArea с полноэкранным окном/представлением
Однако, когда бы то ни было, я получаю сообщение об ошибке утверждения. Я искал в Интернете, но не смог найти никаких ссылок.
*** Assertion failure in -[_NSFullScreenWindow _setTrackingRect:inside:owner:userData:useTrackingNum:install:], /SourceCache/AppKit/AppKit-1038.25/AppKit.subproj/NSWindow.m:3944
Вот код, который устанавливает область слежения (х = 1024, у = 768):
cocoaWindow = [[NSWindow alloc] initWithContentRect:NSMakeRect(0.0, 0.0, x,y)
styleMask: NSTitledWindowMask
backing: NSBackingStoreBuffered
defer:NO];
glView = [[WLMacGLView alloc] initWithFrame:NSMakeRect(0.0, 0.0, x,y) pixelFormat:[WLMacGLView defaultPixelFormat]];
[glView setCocoaController:self];
//add the glView as a subview of the window's content view
[[cocoaWindow contentView] addSubview:glView];
NSRect r = [glView frame];
NSTrackingArea *track = [[NSTrackingArea alloc] initWithRect:r options: NSTrackingMouseMoved | NSTrackingActiveWhenFirstResponder | NSTrackingActiveInKeyWindow
owner:self userInfo:nil];
[glView addTrackingArea:track];
[glView enterFullScreenMode:[NSScreen mainScreen] withOptions:nil];
[glView createContext];
Утверждение происходит сразу после вызова enterFullScreenMode: withOptions:
Любой есть идеи? Разве это не тот подход, который я должен предпринять, чтобы получать события с перемещением мыши в полноэкранном окне?
Эти методы реализованы, но они не вызываются, когда окно полноэкранное. – wadesworld
Существует пример приложения, в котором вы можете посмотреть: http://developer.apple.com/mac/library/samplecode/GeekGameBoard/index.html (он использует подкласс NSView, а не OpenGL). –
Убедитесь, что вы вызываете '[[glView window] setAcceptsMouseMovedEvents: YES]', если вы хотите использовать '-mouseMoved:'. –