2015-10-16 14 views
10

Jak wyświetlić resize indicators dla NSWindow bez paska tytułowego?Wskaźnik zmiany rozmiaru NSWindow nie jest widoczny


Stworzyłem nowy projekt Xcode (dla aplikacji Mac) z storyboardem. Właśnie wyłączyłem pole wyboru Title Bar w Appearance (ukrywa pasek tytułu NSwindow).

Dziwne było to, że po wyłączeniu paska tytułu NSWindow nie wyświetlał wskaźników zmiany rozmiaru, gdy wskaźnik myszy znajdował się nad krawędziami okna. Chociaż jeśli przeciągam na krawędziach, to zmieniłem rozmiar.

Domyślam się, że jest to błąd, ponieważ jeśli okno można zmienić poprzez przeciągnięcie myszą nad krawędziami, musi pokazać wskaźniki zmiany rozmiaru.


image

Jak widać na zdjęciu, wskaźniki zmiany rozmiaru są widoczne po użytkownik przeciągnie okno, ale wielu użytkowników pomyśli, że skoro nie ma wskaźnik zmiany rozmiaru, okno nie jest zmienny rozmiar .

+0

Czy ustawiasz obszar śledzenia myszy? Czy aktualizujesz obszar śledzenia myszy po zmianie rozmiaru? – l00phole

Odpowiedz

2

Naprawiłem ten problem przez instacji NSWindow i przesłanianie canBecomeKeyWindow wrócić YES:

#import "MyWindow.h" 

@implementation MyWindow 

- (BOOL)canBecomeKeyWindow { 
    return YES; 
} 

@end 

nie aktualizowanie rozmiaru kursorów w ten przypadek wygląda jak błąd Apple'a. Dokumentacja stwierdza: "Właściwością canBecomeKeyWindow jest YES, jeśli okno ma pasek tytułu lub pasek zmiany rozmiaru, lub NO w innym przypadku.", Więc oczekuję, że canBecomeKeyWindow zwróci YES dla okna z możliwością zmiany rozmiaru. Ale tak nie jest.

UPD: Sprawdzono 10.10.5. Mam nadzieję, że będziesz zachowywać się tak samo 10.11.

1

Nie sprawdziłem tego, ale można ustawić wskaźniki zmiany rozmiaru ręcznie. Myślę, że chciałbym dodać cztery NSTrackingAreas do podklasy contentView Windows (po jednym dla każdej strony okna, tylko kilka pikseli w wysokości/szerokości). W metodzie mouseEntered() utwórz nowy obiekt NSCursor dla odpowiedniej pozycji myszy. Pamiętaj, że pozycja może się zmienić, więc użyj również metody mouseMoved(). Po mouseExited() zresetuj kursor.

Ponownie, nie próbowałem tego, ale powinno działać.

PS: Nie zapomnij złożyć radar na ten temat;)

Powiązane problemy