2012-08-04 2 views
8

Je voudrais obtenir le texte copié dans le presse-papiers lors du lancement de l'application.iOS SDK obtenir le texte du presse-papiers sur la charge de l'application

Je peux utiliser le texte suivant pour obtenir le texte disponible du presse-papiers. Mais j'ai besoin d'utiliser cette valeur dans un autre viewcontroller. Comment puis-je transmettre cette valeur à mon viewcontroller?

- (void)applicationDidBecomeActive:(UIApplication *)application { 

    NSLog([UIPasteboard generalPasteboard].string); 

} 
+2

Pourquoi ne pas simplement appeler '[UIPasteboard generalPasteboard] .string' dans votre contrôleur de vue? –

+0

viewController ne prend pas en charge l'événement applicationDidBecomeActive. Je veux obtenir le contenu du presse-papiers lorsque l'application devient active depuis l'arrière-plan. – sleepwalkerfx

Répondre

9

Déclarez et mettre en œuvre une méthode sur votre CV que vous appelez du délégué de l'application à devenir actif:

@inferface ViewController: UIViewController { 
    /* etc. */ 
} 

- (void)handlePasteboardString:(NSString *)s; 

@end 

dans votre délégué app:

- (void)applicationDidBecomeActive:(UIApplication *)a 
{ 
    [self.mainViewController handlePasteboardString:[UIPasteboard generalPasteboard].string]; 
} 
+0

hmm j'ai essayé cela mais cela me donne une erreur: AppDelegate.m: 65: 12: Propriété 'ViewController' introuvable sur l'objet de type 'AppDelegate *' ... Ma vue principale s'appelle ViewController, qu'est-ce qui manque? devrais-je ajouter des délégués à mon viewcontroller? – Fredv

+5

@Fredv Oh allez ... –

10

Une bien meilleure façon de la gestion de ceci serait d'ajouter un observateur (dans le contrôleur de vue) pour l'événement UIApplicationDidBecomeActiveNotification. De cette façon, vous évitez le couplage inutile entre le délégué de l'application et le contrôleur de vue.

[[NSNotificationCenter defaultCenter] addObserver:self 
             selector:@selector(getClipboardString:) 
              name:UIApplicationDidBecomeActiveNotification object:nil]; 

Edit: Ne pas oublié de retirer l'observateur lorsque le contrôleur de vue est supprimé:

[[NSNotificationCenter defaultCenter] removeObserver:self]; 
0

Je ne sais pas si vous voulez que l'élément de presse-papiers, mais si elle est quand ce contrôleur de vue spécifique est affichée ou sur le point d'être affiché, vous pouvez le faire dans le viewDidLoad pour cette vue contrôleur

Questions connexes