2012-08-04 5 views
8

Me gustaría obtener el texto copiado en el portapapeles cuando se inicia la aplicación.iOS SDK obteniendo texto del portapapeles en la carga de la aplicación

Puedo usar el texto siguiente para obtener el texto disponible del portapapeles. Pero necesito usar este valor en un viewcontroller diferente. ¿Cómo puedo pasar este valor a mi viewcontroller?

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

    NSLog([UIPasteboard generalPasteboard].string); 

} 
+2

¿Por qué no simplemente llama a '[UIPasteboard generalPasteboard] .string' en su controlador de vista? –

+0

viewController no admite el evento applicationDidBecomeActive. Quiero obtener el contenido del portapapeles cuando la aplicación se active desde el fondo. – sleepwalkerfx

Respuesta

9

declarar y poner en práctica un método en su VC, que llama desde el delegado de la aplicación al convertirse en activa:

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

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

@end 

en delegado de la aplicación:

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

hmm Lo he intentado pero me da un error: AppDelegate.m: 65: 12: La propiedad 'ViewController' no se encuentra en el objeto de tipo 'AppDelegate *' ... Mi vista principal se llama ViewController, ¿qué falta? ¿Debo agregar algunos delegados a mi viewcontroller? – Fredv

+5

@Fredv Oh vamos ... –

10

Una manera mucho mejor de manejar esto sería agregar un observador (en el controlador de visualización) para el evento UIApplicationDidBecomeActiveNotification. De esta forma evitará el acoplamiento innecesario entre el delegado de la aplicación y el controlador de visualización.

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

Editar: No se olvidó de quitar el observador cuando se quita el controlador de vista:

[[NSNotificationCenter defaultCenter] removeObserver:self]; 
0

No está seguro de si desea que el elemento del portapapeles pero si es cuando se demuestra que controlador de vista específico o a punto de ser mostrado, puede hacerlo en el viewDidLoad para ese controlador de vista

Cuestiones relacionadas