我已经使用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
我不确定问题是什么。
答案 0 :(得分:3)
UIActivityViewController在iOS 8中速度非常快。但是,您无法在Instagram,Vintiqu等其他第三方应用程序中打开图像。
此外,presentOpenInMenuFromRect实际上比iOS 8中的presentOptionsMenuFromRect快(iOS 8.0.2也是如此)。 但是,presentOpenInMenuFromRect不显示共享操作。
我想为用户提供&#34;保存图片,分配给联系人,复制,打印,...&#34;在共享视图上。 所以,我目前的解决方法如下:(
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];
}
答案 1 :(得分: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控制器。
答案 2 :(得分:1)
到目前为止我的解决方法是使用presentOpenInMenuFromRect
代替presentOptionsMenuFromRect
,这将显示更少的项目,但至少它不会导致内存问题。在iOS 8 beta 5下,QuickLook选项似乎也有问题,除了电影内存问题之外,pdf快速查看也不起作用。
答案 3 :(得分:1)
简单的解决方案:将UIDocumentInteractionController
保持为View Controller变量(属性或实例var)并在viewDidLoad
内初始化它(在我的情况下,我在没有任何参数的情况下初始化它)。如果要打开的fileURL是动态更改的,只需在显示之前更改UIDocumentInteractionController.URL
属性。
答案 4 :(得分: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;
}