2015-01-23 5 views
6

Ich habe ein Fenster, das ich Benutzern ermöglichen soll zu verschieben, indem Sie irgendwo im Fensterinhalt (nicht nur die Titelleiste) ziehen. Ich weiß, dass dies über die NSWindow movableByWindowBackground Methode durchgeführt werden kann, aber das scheint nicht von selbst zu funktionieren.Verschieben von Fenster durch Ziehen von Hintergrund (mobileByWindowBackground)

I gather das Überschreiben NSView mouseDownCanMoveWindow erforderlich sein. Aber ich kann das nicht für alle Elternansichten (geteilte Ansichten usw.) leicht machen. Es zu einem strukturierten Fenster zu machen, hat nicht geholfen. Es ist nicht überraschend, dass die Unterklasse NSWindow zum Überschreiben isMovableByWindowBackground auch nicht geholfen hat.

Ist es wirklich notwendig, alle übergeordneten Ansichten im Fenster zu untergliedern, damit dies funktioniert?

+0

Versuchen: http://stackoverflow.com/questions/4563893/allow-click-and-dragging-a-view-to-drag-the-window-itself –

Antwort

5

Unter OS X 10.11 funktioniert die Einstellung der NSWindow-Eigenschaft movableByWindowBackground auf YES.

Für dieses Verhalten ist keine Unterklasse mehr erforderlich. diese

+1

Nach meiner Erfahrung, das ist nicht der Fall. Ich habe eine NSSsplitView, die ein Fenster abdeckt, und ich habe diese Eigenschaft festgelegt. Das Fenster kann nicht aus Hintergrundbereichen gezogen werden. Ich baue gegen 10.11 und mein Einsatzziel ist 10.11+ – Bryan

+0

@Bryan erwägen, einen Fehler mit Apple gegen 'NSSplitView' zu protokollieren; Es klingt, als würden unbehandelte Mausereignisse nicht wie erwartet über die NSResponder-Kette weitergeleitet. –

+1

Ich würde sagen, das ist richtig. Ich überschrieb -mouseDownCanMoveWindow in der SplitView, gab YES zurück, und das löste das Problem. – Bryan

Verwandte Themen