【发布时间】:2012-09-22 12:04:34
【问题描述】:
我有一个 UIActivity 子类,它创建了自己的 activityViewController:
- (UIViewController *)activityViewController {
WSLInProgressViewController* progressView = [[[WSLInProgressViewController alloc] init] autorelease];
progressView.message = [NSString stringWithFormat:NSLocalizedString(@"Posting to %@...",@"Posting to..."),
self.activityType];
return progressView;
}
我已经添加了一个完整的repro on GitHub。
根据文档,您不应该手动关闭它。相反,操作系统会在您调用 activityDidFinish: 时执行此操作。这在 iPhone 上运行时效果很好。
当我说“有效”时,这就是我所期待的事件序列(在 iPhone 上可以看到):
- 显示
UIActivityViewController - 用户按下我的自定义活动
- 我的视图控制器出现了
- 我打电话给
activityDidFinish: - 我的自定义视图控制器已关闭
-
UIActivityViewController也被驳回
但是,当我在 iPad 模拟器上运行相同的代码时——唯一的区别是我将UIActivityViewController 放在弹出窗口中,正如文档所说的那样——activityViewController 永远不会关闭。
正如我所说,这是 代码 wo/popUP 在 iPhone 上工作,我已经逐步完成了代码,所以我知道 activityDidFinish: 正在被调用。
我发现这个雷达在谈论same problem in iOS6 beta 3,但它似乎是这样基本的功能,以至于我怀疑我的代码而不是操作系统中存在错误(另请注意,它与 Twitter 和 Facebook 功能一起正常工作!)。
我错过了什么吗?在 UIPopoverViewController 中运行时,我是否需要在 activityViewController 中做一些特别的事情? “流程”应该在 iPad 上会有所不同吗?
【问题讨论】:
-
你是如何关闭 UIPopoverViewController 的?根据过去的经验,您需要通过调用 [myPopoverControler dismissPopoverAnimated]; 来明确地关闭弹出框本身;
-
你想出解决方案了吗?这似乎是一个严重的错误。基本上这意味着实现
activityViewController的自定义 UIActivity 在 iPad 上是无用的。 -
@matt 下面接受的答案是我见过的最好的答案。我将 Radar 12545554 用于“不消除”错误,将 12545600 用于“出现模态”。如果你有机会,请欺骗。他们俩都还开着。对于我的应用,我最终没有使用
activityViewController。 -
谢谢@StephenDarlington - 我确实提交了一个错误报告。您在下面接受的答案一次有效,但第二次无效,如果您检查所涉及的各个类的 dealloc,您会发现内部发生了严重的内存管理错误。
标签: ipad ios6 uiactivity