2014-08-27 5 views
10

Ich habe UIDocumentInteractionController für die Freigabe der Dateien verwendet, aber es öffnet Menüoptionen nach 25 Sekunden in iOS 8 Beta 5 und funktioniert gut in iOS 7.1.UIDocumentInteractionController braucht lange Zeit, um Optionen anzuzeigen

Ich habe das Protokoll, das ich unter

eingefügt prüft
Errors encountered while discovering extensions: Error Domain=PlugInKit Code=13 "query cancelled" UserInfo=0x79bd5ef0 {NSLocalizedDescription=query cancelled} 
2014-08-27 15:02:05.634 Localwire[82067:1364165] Unknown activity items supplied: (
     { 
     "com.microsoft.excel.xls" = <d0cf11e0 a1b11ae1 00000000 00000000 00000000 00000000 3e000300 feff0900 06000000 00000000 00000000 10000000 01000000 00000000 00100000 cb070000 01000000 feffffff 00000000 00000000 62000000 e3000000 64010000 e5010000 66020000 e7020000 68030000 e9030000 6a040000 eb040000 6c050000 ed050000 6e060000 ef060000 70070000 ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff 

Ich bin nicht sicher, was das Problem ist.

+0

Ich habe das gleiche Problem mit UIActivityViewController, um das Share-Menü zu präsentieren. Haben Sie irgendwelche Lösungen gefunden? – mrdziuban

+0

Ich habe das gleiche Problem mit einigen exotischen Videoformaten, pdf und doc Dateien mit UIDocumentInteractionController.In meinem Fall bekomme ich eine Speicherwarnung und ich konnte bisher keine Lösung finden. Es ist schlecht zu hören, dass UIActivityViewController das gleiche Problem hat. –

+1

@ user2163024 Ich konnte keine Lösung finden.Ich denke, das Dokument in UiDocument Vorschau-Controller zu öffnen, wo die Freigabe funktioniert – Prashanth

Antwort

2

Ich habe UIActivityViewController verwendet, die kein Problem gezeigt hat. Dieser Fehler ist immer noch in iOS 8 Release-Version

Ich bin so mit UIActivityViewController fix.

I TYOpenInAppActivity verwendet haben die Anwendungen von Drittanbietern in UIActivityViewController

NSURL *URL = [NSURL fileURLWithPath:filePath]; 
TTOpenInAppActivity *openInAppActivity = [[TTOpenInAppActivity alloc] initWithView:self.view andBarButtonItem:barButton]; 
UIActivityViewController *activityViewController = [[UIActivityViewController alloc] initWithActivityItems:@[URL] applicationActivities:@[openInAppActivity]]; 
    // Create pop up 
    self.activityPopoverController = [[UIPopoverController alloc] initWithContentViewController:activityViewController]; 
    // Store reference to superview (UIPopoverController) to allow dismissal 
    openInAppActivity.superViewController = self.activityPopoverController; 
    // Show UIActivityViewController in popup 
    [self.activityPopoverController presentPopoverFromRect:((UIButton *)sender).frame inView:self.view permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES]; 

zeigen Sie die TTOpenInAppActivity Controller in folgenden Link zu finden.

https://github.com/honkmaster/TTOpenInAppActivity

+0

Ihren Code bitte posten –

+1

Haben Sie versucht, eine PDF-Datei mit UIActivityViewController zu öffnen? –

+0

Ich habe es versucht. Außerdem wurde der benutzerdefinierte Seitenrenderer an activityItems übergeben. Dies führt zu dem Fehler "Unknown activity item", obwohl es richtig gehandhabt wurde. – Stas

1

Meine bisherige Problemumgehung ist die Verwendung presentOpenInMenuFromRect anstelle von presentOptionsMenuFromRect, dies wird weniger Elemente zeigen, aber es verursacht zumindest keine Speicherprobleme. Die QuickLook-Option scheint auch unter iOS 8 Beta 5 fehlerhaft zu sein, der PDF-Quick-Look funktioniert auch nicht, abgesehen von Speicherproblemen.

+0

es hat nicht funktioniert für mich .... anstatt dass UIActivityController funktionierte, .... – Prashanth

+0

das Problem mit presentOpenInMenuFromRect ist es zeigt nicht Airdrop, Mail und iMessage Optionen ... die ich brauchte, damit ich verwendet habe UIActivityViewController mit der Verwendung innerhalb Aktivität als TTOpenInAppActivity – Prashanth

0

ich in dieser leite mit UIActivityViewController, wenn sie in einem Wörterbuch von NSData Artikel vorbei, die PNG Bilder darstellen.

Ich konnte das Rendern des Action Sheets beschleunigen, indem ich die NSData Objekte in UIImage Instanzen in der activityViewControllerPlaceholderItem: Methode umwandelte.

- (id)activityViewControllerPlaceholderItem:(UIActivityViewController *)activityViewController { 
    NSMutableDictionary *itemPlaceholders = [NSMutableDictionary dictionary]; 

    [self.items enumerateKeysAndObjectsUsingBlock:^(NSString *key, NSData *obj, BOOL *stop) { 
     UIImage *placeholderImage = [UIImage imageWithData:obj scale:.5]; 
     [itemPlaceholders setObject:placeholderImage forKey:key]; 
    }]; 

    return itemPlaceholders; 
} 
3

UIActivityViewController ist sehr schnell in iOS 8. Jedoch Sie nicht öffnen können Bilder in anderen 3rd-Party-Anwendungen wie Instagram, Vintiqu, und so weiter.

Außerdem ist presentOpenInMenuFromRect in iOS 8 (auch iOS 8.0.2) schneller als presentOptionsMenuFromRect. Aber presentOpenInMenuFromRect zeigt keine Freigabeaktionen an.

Ich möchte Benutzern "Bild speichern, Kontakt zuweisen, kopieren, drucken, ..." in der Freigabeansicht bereitstellen. meine aktuelle Problemumgehung ist also nur, wie unten, :(

if(SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"8.0")) { 
     [self.udic presentOpenInMenuFromRect:CGRectMake(self.view.frame.size.width/2 - 49/2, self.view.frame.size.height-49, 49, 49) inView:self.view animated:YES]; 
    } else { 
     [self.udic presentOptionsMenuFromRect:CGRectMake(self.view.frame.size.width/2 - 49/2, self.view.frame.size.height-49, 49, 49) inView:self.view animated:YES]; 
    } 
+0

Das Problem mit Ihrer Antwort ist presentOpenInMenuFromRect zeigt nicht die Optionen wie Mail, Airdrop und iMessage. – Prashanth

1

Einfache Lösung: Halten Sie die UIDocumentInteractionController als View-Controller-Variable (Eigenschaft oder Instanz var) und init es in viewDidLoad (in meinem Fall habe ich initialisiert es ohne Wenn sich die Datei URL, die Sie öffnen möchten, dynamisch ändert, ändern Sie einfach die Eigenschaft UIDocumentInteractionController.URL vor der Präsentation.