UIActivityViewController在iPad上无法工作?iOS 8

4
我已经参考了类似的SO问题的建议,但似乎无法使其正常工作。我正在开发一款游戏,它会报告最后得分,然后提供一个分享按钮来分享这个得分。
在iPhone上可以正常工作,但是下面展示的iPad代码却不行。当我点击分享按钮时,iPad版本会立即崩溃。此代码来自Coding Explorer上的教程
- (IBAction)shareButton:(id)sender;
{
    NSString * text = [NSString stringWithFormat:@"I just scored %li in Flying Freddy. Think you can beat it? https://itunes.apple.com/app/id1033007818", (long)_score];

NSArray *objectsToShare = @[text];

UIActivityViewController *activityVC = [[UIActivityViewController alloc] initWithActivityItems:objectsToShare applicationActivities:nil];

NSArray *excludeActivities = @[UIActivityTypeAirDrop,
                               UIActivityTypePrint,
                               UIActivityTypeAssignToContact,
                               UIActivityTypeSaveToCameraRoll,
                               UIActivityTypeAddToReadingList,
                               UIActivityTypePostToFlickr,
                               UIActivityTypePostToVimeo];

activityVC.excludedActivityTypes = excludeActivities;

[self presentViewController:activityVC animated:YES completion:nil];
}

iPhone代码(可行)

- (IBAction)ShareIt {

    NSString * text = [NSString stringWithFormat:@"I just scored %li in Flying Freddy. Think you can beat it? https://itunes.apple.com/app/id1033007818", (long)_score];

    NSArray * activityItems = @[text];
    UIActivityViewController * avc = [[UIActivityViewController alloc] initWithActivityItems:activityItems applicationActivities:nil];
    avc.excludedActivityTypes = @[ UIActivityTypePrint, UIActivityTypeCopyToPasteboard, UIActivityTypeAssignToContact, UIActivityTypeSaveToCameraRoll];

    [self presentViewController:avc animated:YES completion:nil];    
}

我不确定,但也许你需要在iPad上用UIPopoverViewController来呈现UIActivityViewController... - Roman Simenok
2个回答

5

您需要添加源代码视图。

尝试添加此行:

activityVC.popoverPresentationController.sourceView = self.view;

你也可以添加箭头的方向:
activityVC.popoverPresentationController.permittedArrowDirections = UIPopoverArrowDirectionRight;
activityVC.popoverPresentationController.sourceView = sender;

谢谢,这个方法可行。但是如何让弹出窗口直接出现在分享按钮上方,而不是像我现在得到的那样出现在某个偏僻的角落?我的屏幕截图:http://i.stack.imgur.com/8wc0c.png - user5647824
activityVC.popoverPresentationController.permittedArrowDirections = UIPopoverArrowDirectionDown; activityVC.popoverPresentationController.sourceView = sender;将上述代码段翻译成中文。 - Pipiks

0

我还需要设置modalPresentationStyle、preferredContentSize和sourceRect才能让Pipiks的答案起作用。


你具体设置了哪些参数? - CanCoder
1
将 modalPresentationStyle 和 preferredContentSize 分配给您呈现的视图控制器。将 sourceRect 分配给视图控制器的 popoverPresentationController。 - rockdaswift

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接