我有一个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 Simulator上运行相同的代码时-唯一的区别是,按照文档中的说明,我将
UIActivityViewController
放在了弹出窗口中-activityViewController
永远不会消失。就像我说的那样,这是代码wo/popUP在iPhone上可以使用,并且我已逐步执行了代码,因此我知道
activityDidFinish:
正在被调用。我发现这个Radar谈论的是same problem in
iOS6
beta 3,但是似乎它的基本功能如此,我怀疑我的代码中存在错误,而不是操作系统中的错误(还要注意,它可以与Twitter和Facebook功能正常工作!)。我想念什么吗?当它在
UIPopoverViewController
中运行时,我需要在activityViewController中做一些特殊的事情吗? iPad上的“流量”是否应该有所不同?
最佳答案
自动解雇似乎仅在直接显示“事件” Controller 而不是包裹在任何东西时才发生。因此,在显示包装好的弹出窗口之前,添加一个完成处理程序
activity.completionHandler = ^(NSString *activityType, BOOL completed){
[self.popup dismissPopoverAnimated:YES];
};
这样你会好起来的
关于ipad - UIActivity activityViewController在iPad上不关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12543565/