Frage

Ich versuche, eine NSTrackingArea in eine Vollbild-Ansicht zu installieren, um Mausereignisse bewegten zu erhalten.

Jedes Mal, wenn ich es tue, erhalte ich eine Behauptung Fehler. Ich habe das Web durchsucht, aber nicht in der Lage gewesen, alle führen zu finden.

*** Assertion failure in -[_NSFullScreenWindow _setTrackingRect:inside:owner:userData:useTrackingNum:install:], /SourceCache/AppKit/AppKit-1038.25/AppKit.subproj/NSWindow.m:3944

Hier ist der Code, der den Tracking-Bereich (x = 1.024, y = 768) einrichtet:

    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];

Die Behauptung geschieht direkt nach dem Aufruf enterFullScreenMode: withOptions:

got Wer irgendwelche Ideen? Ist dies nicht der Ansatz, den ich nehmen sollte Maus in einem Vollbild-Fenster bewegt Ereignisse zu bekommen?

War es hilfreich?

Lösung 2

So ist die Antwort auf diese Frage stellte sich heraus, um einen Fehler in meinem eigenen Code zu sein.

Wenn die NSTrackingArea Initialisierung, ich war für Besitzer im falschen Objekt übergeben. Die richtige Sache zu passieren war die NSView. Damit korrigiert, da alle Arbeiten erwartet.

Andere Tipps

Wenn Sie mit der Maus in der ganzen Sicht verfolgen wollen, ich denke, dass ist einfacher, die mouseDown:, mouseMoved: und mouseUp: Methoden zu implementieren, um die Mausereignisse zu erhalten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top