2014-08-27 6 views
10

Я использовал UIDocumentInteractionController для обмена файлами, но он открывает параметры меню через 25 секунд в iOS 8 beta 5 и отлично работает в iOS 7.1.UIDocumentInteractionController занимает много времени, чтобы показать параметры

Я проверил журнал, который я вставил ниже

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 

Я не уверен, что это проблема.

+0

У меня такая же проблема с использованием UIActivityViewController, чтобы представить меню общего доступа. Найдены ли какие-либо решения? – mrdziuban

+0

У меня то же самое проблема с некоторыми экзотическими видеоформатами, файлами pdf и doc с использованием UIDocumentInteractionController. В моем случае я получаю предупреждение о сохранении памяти, и пока я не нашел решения. Плохо слышать, что у UIActivityViewController такая же проблема. –

+1

@ user2163024 Я не нашел никакого решения.Im думает, чтобы открыть документ в UiDocument контроллер предварительного просмотра, где доля работает нормально – Prashanth

ответ

2

Я использовал UIActivityViewController, у которого не возникла проблема. Эта ошибка все еще присутствует в iOS 8. Версия для версии

Итак, я собираюсь исправить ошибку UIActivityViewController.

Я использовал TYOpenInAppActivity показать сторонние приложения в 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]; 

Вы можете найти контроллер TTOpenInAppActivity в ссылке ниже.

https://github.com/honkmaster/TTOpenInAppActivity

+0

отправьте свой код –

+1

Попробовал ли открыть файл PDF с помощью UIActivityViewController? –

+0

Я пробовал. Также передал персонализированный рендеринг страниц для объектов activityItems. Это приводит к ошибке «Неизвестный элемент активности», хотя правильно обрабатывается – Stas

1

Моим обходным решением до сих пор является использование presentOpenInMenuFromRect вместо presentOptionsMenuFromRect, это покажет меньше предметов, но по крайней мере это не вызовет проблемы с памятью. Опция QuickLook, похоже, глючит под iOS 8 beta 5, а также быстрый просмотр pdf не работает, помимо проблем с памятью памяти.

+0

это не сработало для меня .... вместо этого UIAcitivityController работал, ... – Prashanth

+0

проблема с presentOpenInMenuFromRect заключается в том, что он не показывает параметры airdrop, mail и iMessage ... которые мне нужны, поэтому я использовал UIActivityViewController с использованием внутренней активности как TTOpenInAppActivity – Prashanth

0

Я бегу в это с UIActivityViewController, при переходе в словаре NSData элементов, представляющих PNG изображения.

Я смог ускорить рендеринг листа действий путем преобразования объектов NSData в UIImage экземпляров в методе activityViewControllerPlaceholderItem:.

- (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 очень быстро в прошивке 8. Тем не менее, вы не могу открывать изображения в других приложениях третьих сторон, таких как Instagram, Vintiqu, и так далее.

Кроме того, presentOpenInMenuFromRect действительно быстрее, чем presentOptionsMenuFromRect в iOS 8 (iOS 8.0.2 тоже). Но, 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]; 
    } 
+0

проблема с вами - ответ присутствует. В OpenInMenuFromRect не отображаются параметры, такие как mail, airdrop и iMessage. – Prashanth

1

Простое решение: сохранить UIDocumentInteractionController как переменную View Controller (свойство или экземпляр вар) и инициализировать его внутри viewDidLoad (в моем случае я инициализируется без какой-либо параметры). Если файлURL, который вы хотите открыть, динамически изменяется, просто измените свойство UIDocumentInteractionController.URL перед представлением.