ios8 - precio - ipad pro 2018 lanzamiento
LaunchServices: invalidationHandler llamado-hoja compartida de iOS 8 (6)
Ver este mensaje de error en los registros, aunque no de manera constante, alrededor del tiempo en que uso SLComposeViewController
para abrir una hoja de Twitter o Facebook. No estoy usando ninguna nueva API de iOS 8, solo estoy probando el código existente en iOS 8. Veo que otros han tenido este problema e incluso han visto bloqueos al usar otros controladores de vista modal del SDK de Cocoa Touch.
LaunchServices: invalidationHandler llamado
¿Hay nuevas precauciones para tomar con SLComposeViewController
y UIActivityViewController
en iOS 8? ¿Algo más a tener en cuenta?
Agregue este código después de presentar su controlador de vista de actividad:
if ([activityVC respondsToSelector:@selector(popoverPresentationController)])
{
// iOS 8+
UIPopoverPresentationController *presentationController = [activityVC popoverPresentationController];
presentationController.sourceView = sender; // if button or change to self.view.
}
Esto elimina el mensaje de error para mí y funciona como se espera. Debe deshacerse de la instrucción if que llama "isAvailableForServiceType:"
Debe tener un aspecto como este. Feliz codificacion
SLComposeViewController *tweetSheet = [SLComposeViewController
composeViewControllerForServiceType:SLServiceTypeTwitter];
[tweetSheet setInitialText:@"Great fun to learn iOS programming at appcoda.com!"];
[self presentViewController:tweetSheet animated:YES completion:nil];
if ([tweetSheet respondsToSelector:@selector(popoverPresentationController)])
{
// iOS 8+
UIPopoverPresentationController *presentationController = [tweetSheet popoverPresentationController];
presentationController.sourceView = sender; // if button or change to self.view.
}
Mirando los foros de desarrolladores : "Ese mensaje de registro no indica ningún error de su parte".
Respecto al cierre automático (no al bloqueo): creo que probablemente esté relacionado con el enlace que intenta compartir. Estoy viendo lo mismo cuando intento publicar enlaces de música (Spotify, SoundCloud, ...). El mismo tweet funciona si sustituyo el enlace por un enlace a algún contenido no multimedia. Archivaré el radar para ver si es intencional ...
También es posible que necesite definir el sourceRect
. Usé el siguiente código para mostrar un SLComposeViewController desde una tableView.
if ([controller respondsToSelector:@selector(popoverPresentationController)]) {
//get rect for this row in table
CGRect frame = [self.tableView rectForRowAtIndexPath:indexPath];
//convert table row frame to view reference
CGRect frameInView = [self.tableView convertRect:frame toView:self.view];
[controller popoverPresentationController].sourceRect = frameInView;
[controller popoverPresentationController].sourceView = self.view;
}
Tuve un problema similar con un UIDocumentInteractionController, donde cuando hice tapping fuera de él para descartarlo, o seleccioné otra aplicación para abrir el documento, se bloquearía con "LaunchServices: invalideationHandler llamado" mensaje de consola mostrado dos veces (solo con iOS 8) .
Una solución alternativa es agregar la llamada a presentOpenInMenuFromRect:inView:animated
a la cola principal, es decir
dispatch_async(dispatch_get_main_queue(), ^() {
[self.documentInteraction presentOpenInMenuFromRect:theRect inView:self.view animated:YES];
});