【问题标题】:UIActivityViewController not working on iPad? iOS 8UIActivityViewController 在 iPad 上不起作用? iOS 8
【发布时间】:2015-12-21 21:40:17
【问题描述】:

我已遵循类似 SO 问题的建议,但似乎无法完成这项工作。我正在开发一款游戏,它会报告最后的得分,然后是最后得分的分享按钮。

这适用于 iPhone,而我的 iPad 代码如下所示。当我点击分享按钮时,iPad 版本就崩溃了。此代码来自this tutorial on Coding Explorer

iPad 代码(不起作用)

- (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...

标签: ios objective-c ipad uiactivityviewcontroller


【解决方案1】:

您必须添加源视图。

尝试添加这一行:

activityVC.popoverPresentationController.sourceView = self.view;

你也可以添加箭头方向:

activityVC.popoverPresentationController.permittedArrowDirections = UIPopoverArrowDirectionRight;
activityVC.popoverPresentationController.sourceView = sender;

【讨论】:

  • 谢谢,这行得通。但是,您如何使弹出框直接位于“共享”按钮上方,而不是像我现在这样在某个不起眼的角落?我的屏幕截图:i.stack.imgur.com/8wc0c.png
  • 像这样:activityVC.popoverPresentationController.permittedArrowDirections = UIPopoverArrowDirectionDown; activityVC.popoverPresentationController.sourceView = 发件人;
【解决方案2】:

我还必须设置 modalPresentationStyle、preferredContentSize 和 sourceRect 才能让 Pipiks 回答正常工作。

【讨论】:

    猜你喜欢
    • 2014-10-27
    • 2014-11-29
    • 2015-04-01
    • 2018-03-06
    • 1970-01-01
    • 2015-04-17
    • 2020-11-09
    • 2015-08-06
    相关资源
    最近更新 更多