2008-12-26 6 views

Répondre

1

J'ai an OS X app qui fait ceci par polling with an NSTimer. J'ai essayé de rechercher des notifications distribuées pour voir si je pouvais trouver une meilleure façon de le faire, mais je ne pouvais rien voir d'extrêmement utile. J'ai reçu des notifications lorsque l'application était launched ou quit. ce qui est au moins un peu utile. Vous pouvez voir l'enregistrement de ceux-ci où mon controller wakes up.

Cette application a été extrêmement utile pour moi et même interroger une fois par seconde utilise presque pas de CPU. Si je pouvais le rendre plus axé sur les événements, je le ferais, cependant. :)

0

Je ne suis pas au courant d'un 'officiel'/bonne façon de le faire, mais une façon hackish d'y arriver est d'écouter les notifications distribuées et de voir celles qui sont toujours renvoyées lorsque l'application change , de sorte que vous pouvez écouter celle-là:

vous pouvez définir quelque chose comme ça jusqu'à:

def awakeFromNib(self): 
    NSDistributedNotificationCenter.defaultCenter().addObserver_selector_name_object_(
     self, 'someNotification:', None, None) 

def someNotification_(self, notification): 
    NSLog(notification.name()) 

une fois que vous avez trouvé une notification qui se déclenche toujours lorsque les applications sont activées, vous pouvez remplacer le premier « Aucun 'dans l'appel addObserver_etc_ avec le nom de cette notification et vérifiez l'application la plus en avant dans votre méthode' someNotification_ '.

Dans mon cas, je remarquai que la « AppleSelectedInputSourcesChangedNotification » a tiré à chaque fois que je suis passé des applications, donc j'écouterait que ..

Gardez à l'esprit que cela peut briser tout moment et vous serez prolly vérifierons pour une changer dans la première application plus souvent que nécessaire.

Il doit y avoir une meilleure façon si .. heureusement :)

Questions connexes