2017-09-06 10 views
0

Je suis sur objectiveC, OSX, pas iOS. XCode 8.3Modal NSWindow Notification après être redevenu visible

J'ai une fenêtre de préférences (personnalisée NSWindow) qui s'ouvre en tant que modale sur ma fenêtre principale.

La fenêtre de préférences elle-même contient une vue avec des onglets. La hauteur de la tabulation change la taille de la fenêtre chaque fois que l'on clique dessus.

premier onglet cliqué:

enter image description here

deuxième onglet cliquée:

enter image description here

Maintenant, si quelqu'un cache l'application dans le dock et l'active à nouveau, la fenêtre des préférences devient actif avec la hauteur de l'onglet 1, même si l'onglet 2 est toujours actif. Donc le contenu est coupé.

enter image description here

Ce que je besoin est une sorte de notification qui se déclenche à nouveau devenir actif/visible pour déclencher un redimensionnement de la fenêtre avant qu'il ne soit affiché.

Je l'ai essayé avec ces notifications dans ma sous-classe NSWindow (avec le jeu de délégué NSWindow).

- (void)windowDidResignMain:(NSNotification*)notification{ 
NSLog(@"windowDidResignMain"); 
} 

- (void)windowDidResignKey:(NSNotification*)notification{ 
NSLog(@"windowDidResignKey"); 
} 

- (BOOL)canBecomeKeyWindow{ 
    return YES; 
} 

- (BOOL)canBecomeMainWindow{ 
    return YES; 
} 

Mais aucun d'eux n'a fonctionné. Est-ce parce que c'est une fenêtre modale? Toute aide appréciée.

+1

Cela ne devrait pas arriver. Quelles sont les façons de placer/redimensionner utilisez-vous ici? Mise en page automatique Ressorts et entretoises? Comment redimensionnez-vous les fenêtres? Comment remplissez-vous/permutez-vous les onglets? – uliwitness

Répondre

0

Je l'ai trouvé. Mon erreur - mon tabViewController a déclenché un redimensionnement sur viewWillAppear avec toujours le premier onglet. J'ai changé cela à l'onglet sélectionné actuel et c'était tout.