iOS 7自定义UIActivity作为popup窗口

这是我在StackOverflow上的第一个问题,请耐心等待…

这是问题:
我已经创build了一个自定义的活动添加书签,这是从UIActivityViewController打开。 在iPhone上,它被打开为一个模式,这是可以的。 但是在iPad上,我在Popover中打开了UIActivity ,并且还想在此Popover中打开自定义的BookmarkActivity。
方法

-(UIViewController *)activityViewController在我的UIActivity子类中的-(UIViewController *)activityViewController看起来像这样:

 - (UIViewController *)activityViewController { if ([UIDevice currentDevice].userInterfaceIdiom == UIUserInterfaceIdiomPad) { GlobalBookmarksAddViewController *bookmarkViewController = [self.parentController.storyboard instantiateViewControllerWithIdentifier:@"GlobalBookmarksAddViewController"]; bookmarkViewController.openedDocument = self.openedDocument; bookmarkViewController.yAxis = self.yAxis; bookmarkViewController.parentActivity = self; UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:bookmarkViewController]; nav.modalInPopover = YES; //nav.modalPresentationStyle = UIModalPresentationFormSheet; nav.modalPresentationStyle = UIModalPresentationCurrentContext; return nav; } else { GlobalBookmarksAddViewController *bookmarkViewController = [self.parentController.storyboard instantiateViewControllerWithIdentifier:@"GlobalBookmarksAddViewController"]; bookmarkViewController.openedDocument = self.openedDocument; bookmarkViewController.yAxis = self.yAxis; bookmarkViewController.parentActivity = self; UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:bookmarkViewController]; return nav; } } 

使用此代码,书签控制器在popup窗口中显示约0.2秒,然后popover消失。 如果我将属性nav.modalPresentationStyleUIModalPresentationCurrentContext更改UIModalPresentationFormSheet ,bookmarkController正确显示,但在正常的popup窗口中。

我已经做了一些研究,并且find了两个链接:
UIActivity activityViewController在iPad上以模式呈现,而不是在popup窗口中呈现
– [UIActivity activityViewController]不在UIPopoverController中显示

他们两人都表示目前还不可能,但不知何故,这一定是可能的 – 它在Safari(也是“添加书签”function)中起作用。

所以问题是:

  1. 如何改变这个自定义视图控制器的行为,以便在popover中正确打开?
  2. 如果目前唯一的可能性是打开它作为一个正常popup窗口,有没有办法调整它? 我曾尝试更改导航控制器和书签控制器的大小和框架,但它不工作。

编辑:我已经联系了苹果关于这个,这里的解决scheme:
方法-(UIViewContreoller *)activityController现在看起来像这样:

 -(UIViewController *)activityViewController { if ([UIDevice currentDevice].userInterfaceIdiom == UIUserInterfaceIdiomPad) { return nil; } else { GlobalBookmarksAddViewController *bookmarkViewController = [self.parentController.storyboard instantiateViewControllerWithIdentifier:@"GlobalBookmarksAddViewController"]; bookmarkViewController.openedDocument = self.openedDocument; bookmarkViewController.yAxis = self.yAxis; bookmarkViewController.parentActivity = self; UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:bookmarkViewController]; return nav; } } 

而且popover中视图的代码已经被移到了-(void)performActivity方法中:

 -(void)performActivity { if ([UIDevice currentDevice].userInterfaceIdiom == UIUserInterfaceIdiomPad) { GlobalBookmarksAddViewController *bookmarkViewController = [self.parentController.storyboard instantiateViewControllerWithIdentifier:@"GlobalBookmarksAddViewController"]; bookmarkViewController.openedDocument = self.openedDocument; bookmarkViewController.yAxis = self.yAxis; bookmarkViewController.parentActivity = self; UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:bookmarkViewController]; nav.modalInPopover = YES; nav.modalPresentationStyle = UIModalPresentationCurrentContext; // self.activityController is my own property set for the activity after the UIActivityViewController is created [self.activityController presentViewController:nav animated:YES completion:NULL]; } }