NSViewController & mouseDown Event

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • NSViewController & mouseDown Event

    Abend,

    ich hab einen NSViewController und würde gerne in diesem das MouseDown Event verwenden. Klappt leider nicht...er ruft das Event nie auf.

    ich weiß...ich müsste das nsview neu implementieren..aber so muss es doch auch irgendwie gehen oder?

    Hat jemand nen Tipp?

    Viele Grüße,
    KaboomProjeXs
    -Carpe Diem-
  • Falls Du für 10.6 entwickelst (erst dann erbt NSViewController von NSResponder), sollte das klappen. Du musst den VC natürlich in die Responder-chain reinhängen, das geschieht im Gegensatz zu views nicht automatisch. Am besten wenn Du das vom VC verwaltete View irgendwo einfügst gleich den VC mit in die RC reinhängen.

    Gruß, Markus
  • Du musst dafuer sorgen, dass dein NSView auf Events reagiert. Also zumindest - (BOOL)acceptsFirstResponder musst du implementieren. Wenn acceptsFirstResponder YES zurueck gibt, und selber nicht mouseDown: implementiert, kannst du es im NSViewController machen.
  • Vielen Dank für die Antworten!

    Folgendes habe ich in der .m Datei stehen:

    Quellcode

    1. - (BOOL)acceptsFirstResponder {
    2. return YES;
    3. }
    4. - (BOOL)becomeFirstResponder {
    5. return YES;
    6. }
    7. - (void)mouseDown:(NSEvent *)theEvent {
    8. NSLog(@"Test"); }
    Alles anzeigen



    Trotzdem wird wenn ich auf das fenster klicke das MouseDown Event nicht aufgerufen...

    Viele grüße,
    KaboomProjeXs
    -Carpe Diem-
  • Lies Dich mal in die ResponderChain ein - Du hast die benötigte Antwort bereits erhalten...Wobei wirklich die Frage ist, wieso Du das nicht ins View packst. Wieso es mit NSWindowController klappt:

    developer.apple.com/library/ma…doc/uid/10000060i-CH3-SW2
    Nearly all event messages apply to a single window’s responder chain—the window in which the associated user event occurred. The default responder chain for event messages begins with the view that the NSWindow object first delivers the message to. The default responder chain for a key event message begins with the first responder in a window; the default responder chain for a mouse or tablet event begins with the view on which the user event occurred. From there the event, if not handled, proceeds up the view hierarchy to the NSWindow object representing the window itself. The first responder is typically the “selected” view object within the window, and its next responder is its containing view (also called its superview), and so on up to the NSWindow object. If an NSWindowController object is managing the window, it becomes the final next responder. You can insert other responders between NSView objects and even above the NSWindow object near the top of the chain. These inserted responders receive both event and action messages. If no object is found to handle the event, the last responder in the chain invokes noResponderFor:, which for a key-down event simply beeps. Event-handling objects (subclasses of NSWindow and NSView) can override this method to perform additional steps as needed.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Markus Müller ()

  • Markus Müller schrieb:

    Wobei wirklich die Frage ist, wieso Du das nicht ins View packst
    Weil ich im ViewController mehrere Variablen habe auf die ich in dem MouseDown Event zugreifen will.

    Danke auf jeden Fall für deine Hilfe! Also habe ich das richtig verstanden: Ich muss den VC in die Responder-chain reinhängen (mit setnextresponder?). Und von wo aus sollte ich das machen?


    //EDIT: Habs geschafft! Hab einfach den VC in die RC von einem WC aus reingehängt ; ) Danke!

    Viele Grüße,
    KaboomProjeXs
    -Carpe Diem-

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von KaboomProjeXs ()