Détecter le changement de spaces

JE729JE729 Membre
12:03 modifié dans API AppKit #1
Bonjour,
Je débute avec Cocoa et l'Objective-C et j'ai besoin qu'une fonction se lance lors d'un changement de spaces. J'ai essayé en écrivant le code ci-dessous mais cela ne marche pas.

&nbsp; &nbsp; [[NSNotificationCenter defaultCenter] addObserver:self<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  selector:@selector(changementSpace)<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  name:NSWorkspaceActiveSpaceDidChangeNotification<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  object:nil];<br />


J'ai surement pas compris à  quoi sert NSWorkspaceActiveSpaceDidChangeNotification ou je ne me sert pas correctement du notificationCenter.
Merci de votre aide.

Réponses

  • devulderdevulder Membre
    12:03 modifié #2
    dans 1300999241:

    Bonjour,
    Je débute avec Cocoa et l'Objective-C et j'ai besoin qu'une fonction se lance lors d'un changement de spaces. J'ai essayé en écrivant le code ci-dessous mais cela ne marche pas.

    &nbsp; &nbsp; [[NSNotificationCenter defaultCenter] addObserver:self<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  selector:@selector(changementSpace)<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  name:NSWorkspaceActiveSpaceDidChangeNotification<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  object:nil];<br />
    


    J'ai surement pas compris à  quoi sert NSWorkspaceActiveSpaceDidChangeNotification ou je ne me sert pas correctement du notificationCenter.
    Merci de votre aide.


    Tu as bien une méthode nommé changementSpace dans ta classe ?
    Sinon cette notification est dispo pour le 10.6 uniquement.




  • mpergandmpergand Membre
    mars 2011 modifié #3
    dans 1300999241:

    Bonjour,
    Je débute avec Cocoa et l'Objective-C et j'ai besoin qu'une fonction se lance lors d'un changement de spaces. J'ai essayé en écrivant le code ci-dessous mais cela ne marche pas.

    &nbsp; &nbsp; [[NSNotificationCenter defaultCenter] addObserver:self<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  selector:@selector(changementSpace)<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  name:NSWorkspaceActiveSpaceDidChangeNotification<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  object:nil];<br />
    




    @selector(changementSpace:)

    car la méthode recevant la notif est:

    -(void) changementSpace:(NSNotification*) notif {}
  • JE729JE729 Membre
    12:03 modifié #4
    Je suis bien en 10.6 et lorsque je fais [self changementSpace] ma fonction se lance très bien.
    Je viens d'essayer en ajoutant les paramètres comme mpergand me suggérait mais ça me fait toujours pareil , rien  :(
    NSWorkspaceActiveSpaceDidChangeNotification sert il bien à  détecter lorsque je passe par exemple du space1 au space2 ?
  • JE729JE729 Membre
    12:03 modifié #5
    Je viens de faire un essaie en changeant NSWorkspaceActiveSpaceDidChangeNotification par NSWindowDidResizeNotification et lorsque je modifie la taille de la fenêtre tout fonctionne très bien. C'est donc un problème avec NSWorkspaceActiveSpaceDidChangeNotification.
  • JE729JE729 Membre
    12:03 modifié #6
    Comme je trouve pas de solution, je vais utiliser un NSTimer. Merci comme même.
  • niluge2kniluge2k Membre
    12:03 modifié #7
    Bonjour,

    C'est parce qu'il faut utiliser le notificationCenter du NSWorkspace et pas le defaultNotificationCenter
    <br />[[[NSWorkspace sharedWorkspace] notificationCenter] addObserver:self<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  selector:@selector(changementSpace:)<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  name:NSWorkspaceActiveSpaceDidChangeNotification<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  object:nil];<br />
    


    Bon courage.

    Boris
  • JE729JE729 Membre
    12:03 modifié #8
    Merci !!!
    Ca marche parfaitement :)
  • APAP Membre
    12:03 modifié #9
    Pour rebondir sur le sujet, savez-vous comment connaitre le space actif et changer de Space sans utiliser de méthode interdites?
  • JE729JE729 Membre
    12:03 modifié #10
    Si la methode interdite, c'est celle la https://github.com/shabble/osx-space-id/tree/
    Ba je sais pas comment faire d'une autre façon.
Connectez-vous ou Inscrivez-vous pour répondre.