2010-08-19 5 views
0

Je me demande simplement s'il existe une méthode permettant d'intercepter l'interaction de l'utilisateur avec l'application.IPhone Intercepter toute interaction d'application

La raison pour laquelle je demande est que lorsqu'un utilisateur interagit avec l'application, je mets à jour une date dans la base de données. Si elles datent de plus de 10 minutes, elles sont considérées hors ligne par les autres utilisateurs jusqu'à ce qu'ils reviennent et interagissent avec le programme.

Est-ce que quelqu'un a des idées sur la façon dont je pourrais attraper une interaction de l'utilisateur pour mettre à jour ce champ?

Merci

p.s. C'est une application de navigation. donc même si je peux ajouter un gestionnaire au contrôleur de navigation pour dire quand une page est modifiée cela pourrait faire ???

Répondre

2

Le moyen le plus pratique serait probablement de sous-classer UIApplication et de surcharger la méthode sendAction:to:from:forEvent:. Vous devrez également ajouter une clé à votre fichier Info.plist appelé "NSPrincipalClass" avec une valeur de chaîne contenant le nom de votre sous-classe, qui indique UIKit à votre sous-classe à la place de UIApplication.

MyApplication.m:

- (BOOL)sendAction:(SEL)action to:(id)target 
     from:(id)sender forEvent:(UIEvent *)event 
{ 
    ResetInterationTimeout(); 

    return [super sendAction:action to:target from:sender forEvent:event]; 
} 

Info.plist:

<key>NSPrincipalClass</key> 
<string>MyApplication</string> 
0

Si par l'interaction que vous voulez dire 'touche' alors vous pouvez facilement le faire en mettant un UIView (si N'avez pas un global sur les autres) sur chaque UIViewController dans votre NavigationController qui a le devoir d'enregistrer une touche, en enregistrant la date actuelle sur un contrôleur de niveau supérieur (même le A ppDelegate pourrait fonctionner). Ensuite, ce contrôleur peut comparer la date à la précédente (vous devez la stocker) et si le décalage temporel dépasse votre seuil, vous pouvez déclencher votre action en envoyant un message à l'objet approprié. Here est un guide d'Apple sur la façon d'attraper les touches (vous devrez remplacer la méthode touchesBegan:WithEvent: pour obtenir le premier contact)