2011-01-03 8 views
1

Ich habe 2 Unterklassen von NSView, die Unteransichten zu einem gemeinsamen Superview sind. Sie überlappen sich nicht und sie fangen beide mausgeschädigte Anrufe ab. Wenn ich von einer der Unterklassen zur anderen ziehe, wird die Mouse Drag-Funktion aufgerufen, bis ich die Maustaste loslasse, auch wenn ich über den ganzen Bildschirm ziehe. Ich hatte das Standardverhalten, dass die Mouse-Drag-Funktion nur aufgerufen wurde, wenn die Maus über den Grenzen des Empfängers war. Iam auch mit NSTrackingArea für die Maus eingeben, beenden und verschieben Ereignisse, aber von was ich gelesen habe keine Drag-EreignisseMouseDragged nicht freigegeben beim Ziehen auf andere Ansichten

Vielen Dank für Ihre Zeit, Jose.

+0

Das ist das normale Verhalten. Was ist deine Frage? –

+0

Nun, ich bekam vorher ein anderes Verhalten, und leider weiß ich nicht, was ich geändert habe. Das mousedragged-Ereignis wurde sofort in die andere Unterklassenansicht gesprungen, wenn es seine Grenzen eingibt. Und das brauche ich. –

Antwort

0

Sie könnten die NSWindow Unterklasse ableiten und sendEvent: überschreiben. Auf diese Weise können Sie die NSLeftMouseDragged Ereignisse abfangen und sie auf die von Ihnen gewünschte Weise versenden.

+0

Danke Tom, das hört sich besser an. Am Ende habe ich [super mousedragged] auf beiden Untersichten aufgerufen, und dann ruft der Superview abhängig vom Ort eine [subview distributed_mouseDragged] auf. –