簡體   English   中英

UIDocumentInteractionController需要很長時間才能顯示選項

[英]UIDocumentInteractionController takes long time to show options

我已經使用UIDocumentInteractionController共享文件,但是它在iOS 8 beta 5中25秒后打開菜單選項,並且在iOS 7.1中可以正常工作。

我已經驗證了下面粘貼的日志

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

我不確定是什么問題。

UIActivityViewController在iOS 8中非常快。但是,您無法在其他第三方應用程序(如Instagram,Vintiqu等)中打開圖像。

另外,presentOpenInMenuFromRect確實比iOS 8(也是iOS 8.0.2)中的presentOptionsMenuFromRect更快。 但是,presentOpenInMenuFromRect不顯示共享操作。

我想在共享視圖上為用戶提供“保存圖像,分配給聯系人,復制,打印...”。 所以,我目前的解決方法如下:

    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];
    }

我使用了UIActivityViewController ,但沒有出現任何問題。 此錯誤在iOS 8發行版中仍然存在

因此,我將使用UIActivityViewController修復程序。

我已經使用TYOpenInAppActivityUIActivityViewController顯示第三方應用程序

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];

您可以在下面的鏈接中找到TTOpenInAppActivity控制器。

https://github.com/honkmaster/TTOpenInAppActivity

到目前為止,我的解決方法是使用presentOpenInMenuFromRect而不是presentOptionsMenuFromRect ,這將顯示較少的項目,但至少不會引起內存問題。 在iOS 8 beta 5下,QuickLook選項似乎也存在問題,除了電影內存問題外,pdf快速外觀也不起作用。

簡單的解決方案:將UIDocumentInteractionController保留為View Controller變量(屬性或實例var),然后在viewDidLoad中初始化它(在我的情況下,我不使用任何參數對其進行了初始化)。 如果要打開的fileURL是動態更改的,則只需在呈現前更改UIDocumentInteractionController.URL屬性即可。

當傳入表示PNG圖像的NSData項的字典時,我用UIActivityViewController遇到了這個問題。

通過將NSData對象轉換為activityViewControllerPlaceholderItem:方法中的UIImage實例,我能夠加快操作表的渲染速度。

- (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;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM