在我的应用程序中,我使用TTOpenInAppActivity在UIActivityController中插入“打开”操作。
内部工作原理如下:
某个视图控制器呈现已经构建好了TTOpenInActivity的UIActivityController。
用户点击“打开”按钮时,将触发以下方法:
在 iOS7 中一切正常。在 iOS8 中,UIActivityController 被取消后什么都没有发生。 调试时我成功检测到iOS8中完成处理程序从未被调用。 请帮忙找出这种行为的原因并使其正常工作。 提前感谢您。
-(void)openWithAction
{
NSURL *fileURL = SOME_URL;
CGRect rect = SOME_RECT;
TTOpenInAppActivity *openInAppActivity = [[TTOpenInAppActivity alloc] initWithView:self.view andRect:rect];
UIActivityViewController *activityViewController = [[UIActivityViewController alloc] initWithActivityItems:@[fileURL] applicationActivities:@[openInAppActivity]];
if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone){
// Store reference to superview (UIActionSheet) to allow dismissal
openInAppActivity.superViewController = activityViewController;
// Show UIActivityViewController
[self presentViewController:activityViewController animated:YES completion:NULL];
} else {
// code for iPad, irrelevant
}
}
用户点击“打开”按钮时,将触发以下方法:
- (void)performActivity
{
if(!self.superViewController){
[self activityDidFinish:YES];
return;
}
// Dismiss activity view
if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone){
// iPhone dismiss UIActivityViewController
[self.superViewController dismissViewControllerAnimated:YES completion:^(void){
if (self.fileURLs.count > 1) {
[self openSelectFileActionSheet];
}
else {
// Open UIDocumentInteractionController
[self openDocumentInteractionControllerWithFileURL:self.fileURLs.lastObject];
}
}];
} else {
// code for iPad, irrelevant
}
}
}
由于该应用程序仅适用于iPhone,因此应执行此代码:
[self.superViewController dismissViewControllerAnimated:YES completion:^(void){
if (self.fileURLs.count > 1) {
[self openSelectFileActionSheet];
}
else {
// Open UIDocumentInteractionController
[self openDocumentInteractionControllerWithFileURL:self.fileURLs.lastObject];
}
}];
在 iOS7 中一切正常。在 iOS8 中,UIActivityController 被取消后什么都没有发生。 调试时我成功检测到iOS8中完成处理程序从未被调用。 请帮忙找出这种行为的原因并使其正常工作。 提前感谢您。