2014-09-19 17 views
10

Ich habe bereits verwandte Fragen here und here angeschaut, und ich habe die vorgeschlagenen Antworten vergeblich implementiert.Präsentieren UIActivityViewController - LaunchServices: invalidationHandler namens

Ich habe einen UIBarButtonItem auf einem UIToolbar, mit Anschluss für Senden Aktion btnTBAction_touch:

In der Klasse des Viewcontroller-Header Ich habe:

@property (nonatomic, strong) UIActivityViewController *activityViewController; 

Die entsprechende Methode in der Klasse Umsetzung:

- (IBAction)btnTBAction_touch:(id)sender { 
    NSString *string = @"Some string"; 
    NSURL *url = [[NSURL alloc] initWithString:@"http://www.google.com"]; 
    UIImage *image = [UIImage imageNamed:@"default.png"]; 
    self.activityViewController = [[UIActivityViewController alloc] 
     initWithActivityItems:@[string, url, image] applicationActivities:nil]; 

    if ([self.activityViewController respondsToSelector:@selector(popoverPresentationController)]) 
    { 
     UIPopoverPresentationController *presentationController = [self.activityViewController 
      popoverPresentationController]; 
     presentationController.sourceView = sender; 
    } 

    [self presentViewController:self.activityViewController animated:YES completion:nil]; 
} 

Während ich im Debug-Modus auf einem physischen Gerät, wenn ich die Schaltfläche, die die oben genannte Methode ruft, berühren, bekomme ich Folgendes in der d ebug Konsole

2014-09-19 09:43:31.635 TestApp[1878:237873] LaunchServices: invalidationHandler called 
2014-09-19 09:43:31.644 TestApp[1878:237814] LaunchServices: invalidationHandler called 

Im Gegensatz zu den damit verbundenen Fragen meine App nicht abstürzt, wenn dies geschieht, geht die App gut zu funktionieren und die UIActivityViewController korrekt dargestellt ... aber ich möchte lieber den Fehler beheben, als sagen, es ist gut genug.

Zusätzlich einige Permutationen der obigen Verfahren unter Verwendung dieser Zeilen habe ich versucht habe:

presentationController.sourceView = self.view; 

presentationController.sourceRect = self.view.frame; 

Nichts davon half das Problem zu beheben.

  • Ich verwende Xcode Version 6.0.1
  • My App des Implementierungsziel ist 7.0 für iPhone nur
  • Testing auf einem iPhone 5s mit iOS 8.0
  • -Code alle in Objective-C
+0

Gleiches Problem. Die in http://stackoverflow.com/questions/25192313/sharing-via-uactivityviewcontroller-to-twitter-facebook-etc-causing-crash vorgeschlagenen Lösungen funktionierten nicht (sourceView oder sourceRect). – loretoparisi

+0

Gleiches Problem hier – Praksha

Antwort

5

Wenn Ihr Entwicklungszielgerät ein iPhone ist, sollten Sie sich keine Gedanken über diese Nachricht machen. Es sieht so aus, als wäre es ein Fehler von Apple. Schauen Sie sich die Entwicklerforen an: "Diese Logmeldung zeigt keinen Fehler von Ihrer Seite an."

Siehe: https://devforums.apple.com/message/1049415#1049415 für mich (vielleicht du dich einloggen erfordern)

+0

Link? mit einer Referenz würde ich dies als die Antwort – chriszumberge

+0

@chriszumberreiche Ich habe meine Antwort bearbeitet und enthielt den Link – Eric

2

Ähnliche Ausgabe hier.

Ich benutze UIDocumentInteractionController, nicht UIActivityViewController, so dass es keine SourceView oder SourceRect zu handhaben gibt.

In der Kopfzeile:

UIDocumentInteractionController *docInteractionController; 

Im .m:

self.docInteractionController = [UIDocumentInteractionController interactionControllerWithURL:fileURL]; 

self.docInteractionController.delegate = self; 
self.docInteractionController.UTI = @"com.adobe.pdf"; 
//UIBarButtonItem *element is an element in my toolbar 
[self.docInteractionController presentOptionsMenuFromBarButtonItem:element animated:YES]; 

Auf der Konsole ich die folgende Warnung sehen:

Unknown activity items supplied: (
    { 
    "com.adobe.pdf" = <25504446 (and then what looks like the rest of the pdf I tried to open)>; 
}, 
"<UIPrintInfo: 0x17b47ca0>" 
) 
2014-10-14 21:11:21.661 iFly[288:29569] LaunchServices: invalidationHandler called 

Und in meiner offiziellen App Store Version meiner App stürzt die App ab. Wenn ich auf meinem iPad kompiliere und laufe, gibt es nur eine Warnung.

Ich kann den Teil der Warnung "Unbekannte Aktivitätselemente" umgehen, indem ich presentOpenInMenuFromBarButtonItem anstelle von presentOptionsMenuFromBarButtonItem für den Aufruf UIDocumentInteractionController verwende, aber die Warnung "LaunchServices" immer noch auftritt.

iPad Version 8.0.2. Xcode Version 6.0.1, Implementierungsziel 6.0 (auch getestet mit Implementierungsziel 8.0). Alle Ziel-c.

+0

Ich sehe das gleiche Problem. Nach dem Abbrechen der Menüoptionen scheint meine Aktionstaste nicht aktiviert zu sein. Nicht sicher, ob es mit diesen Fehlern zu tun hat. Kann jemand bitte das beantworten? – Shwethascar

0

Das ist, was funktioniert hat. Keine Fehler. Ich musste die if-Anweisung loswerden, die "isAvailableForServiceType:" aufgerufen hat. Hoffe es funktioniert für dich!

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. 
    } 
+0

Wie wäre es mit 'UIDocumentInteractionController'? 'UIDocumentInteractionController' hat kein' popoverPresentationController' Attribut – TomSawyer

Verwandte Themen