2015-01-23 10 views
6

Mam okno, które chcę, aby użytkownicy mogli się poruszać, przeciągając dowolne miejsce w treści okna (nie tylko na pasku tytułowym). Wiem, że można to zrobić za pomocą metody NSWindow movableByWindowBackground, jednak wydaje się, że nie działa ona sama.Przeniesienie okna przez przeciągnięcie tła (movableByWindowBackground)

I gather może być konieczne przesłonięcie NSView mouseDownCanMoveWindow. Ale nie mogę tego łatwo zrobić dla wszystkich widoków nadrzędnych (podzielonych widoków itp.). Uczynienie z okna teksturowanego nie pomogło. Nie było zaskoczeniem, że podklasowanie NSWindow w celu nadpisania isMovableByWindowBackground również nie pomogło.

Czy naprawdę konieczne jest podklasy wszystkich widoków nadrzędnych w oknie, aby to działało?

+0

Spróbuj tego: http://stackoverflow.com/questions/4563893/allow-click-and-dragging-a-view-to-drag-the-window-self –

Odpowiedz

5

W systemie OS X 10.11 ustawienie właściwości NSWindow: movableByWindowBackground na YES działa.

Nie ma już potrzeby tworzenia podklasy dla tego zachowania.

+1

Z mojego doświadczenia wynika, że ​​tak nie jest. Mam podgląd NSSplitView, który obejmuje okno i ustawiłem tę właściwość. Okno nie jest przeciągane z obszarów tła. Buduję przeciwko 10.11, a mój cel wdrożenia to 10.11+ – Bryan

+0

@Bryan rozważ zgłoszenie błędu z Apple przeciwko 'NSSplitView'; brzmi to tak, jakby nieobsłużone zdarzenia myszy nie były przekazywane zgodnie z oczekiwaniami przez łańcuch 'NSResponder'. –

+1

Powiedziałbym, że to prawda. Przeanalizowałem -mouseDownCanMoveWindow w splitView, zwróciłem TAK, i to rozwiązało problem. – Bryan

Powiązane problemy