NSWindow et notification de fin d'animation d'ouverture sur OS X Lion ?

Salut la compagnie,



Je suis en train de bosser sur un soft OS X Lion en mode Document Based. À l'ouverture de la fenêtre du document je dois ouvrir un NSPanel modal attaché à  ma fenêtre (ouverture de connexion à  un serveur). Seul problème, si je me place dans le windowDidLoad ou le windowDidBecomeMain le panel s'ouvre pendant que l'animation fini et ça donne un truc moche...



Je ne trouve rien dans la doc de NSWindowController / NSWindowDelegate pour être informé de la fin de l'animation propre à  OS X Lion... Quelqu'un aurait une idée ?

Réponses

  • Tu peux éventuellement supprimer l'animation (animationBehavior)... Bon c'est pas top mais au moins c'est pas crade visuellement parlant.
  • yoannyoann Membre
    C'est ce que j'ai fait pour le moment mais c'est un workaround, pas une solution...
  • Utiliser un NSTimer pour l'affichage du Panel ?
  • yoannyoann Membre
    'Lexxis' a écrit:


    Utiliser un NSTimer pour l'affichage du Panel ?




    Je crois que même Goatse est moins crade que cette solution...



    Je ne suis pas responsable de ce que les curieux pourraient trouver sur Google suite à  ce message...
  • MalaMala Membre, Modérateur
    'Lexxis' a écrit:


    Utiliser un NSTimer pour l'affichage du Panel ?


    Beurk. Quitte à  faire crade y a au moins "- (void)performSelector:(SEL)aSelector withObject:(id)anArgument afterDelay:(NSTimeInterval)delay".



    Et cette notification ça le fait pas?


    - (void)windowDidExpose:(NSNotification *)notification
  • yoannyoann Membre
    'Mala' a écrit:


    Et cette notification ça le fait pas?




    Pas vraiment adapté au problème :



    "Posted whenever a portion of a nonretained NSWindow object is

    exposed"
  • Par pure curiosité en quoi l'utilisation d'un NSTimer ou d'un "- (void)performSelector:(SEL)aSelector withObject:(id)anArgument afterDelay:(NSTimeInterval)delay" est crade ?
  • yoannyoann Membre
    'Lexxis' a écrit:


    Par pure curiosité en quoi l'utilisation d'un NSTimer ou d'un "- (void)performSelector:(SEL)aSelector withObject:(id)anArgument afterDelay:(NSTimeInterval)delay" est crade ?




    Par ce que le jour où l'animation change de timing t'es baisé. Quand on doit jouer avec des animations on est censé avoir des méthodes de préparation et de nettoyage.



    En tout logique on devrait avoir une méthode va apparaitre pour préparer les composant de base et a apparu pour déclencher de première actions automatique sur l'UI. Sur iOS qui est extrêmement orienté animation c'est le cas, sur OS X même Lion il semblerait qu'Apple ait oublié ce passage, ce qui est plutôt handicapant si on veut faire les choses biens.
  • LexxisLexxis Membre
    mars 2012 modifié #10
    Ha oui, je n'avais pas pensé à  cela.

    En fait: ... mouais...
  • mars 2012 modifié #11
    p-e le didBecomeKeyWindow? Avec un flag en plus pour éviter que tu pop ton NSOpenPanel à  chaque fois...
  • MalaMala Membre, Modérateur
    A tester mais c'est déjà  mieux effectivement.
  • 'ldesroziers' a écrit:


    p-e le didBecomeKeyWindow? Avec un flag en plus pour éviter que tu pop ton NSOpenPanel à  chaque fois...




    Même résultat. J'ai l'impression qu'ils ont ajouté leur animation sans mettre la moindre notif à  la fin...
  • Bien. Bien.

    image/crazy.gif' class='bbc_emoticon' alt=' B) ' />
  • LexxisLexxis Membre
    mars 2012 modifié #15
    Quand tu dit attaché à  la fenêtre du document tu parles d'une "modal sheet" ?
  • Oui, un modal sheet qui s'ouvre en même temps que la fenêtre principale du document.



    J'utilise le paradigme NSDocument / NSWindowController pour gérer des interfaces de connexions à  des services réseau. La fenêtre modale est là  pour identifier l'utilisateur.
Connectez-vous ou Inscrivez-vous pour répondre.