ipad - UIActivity activityViewController在iPad上不关闭

标签 ipad ios6 uiactivity

我有一个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
  • 用户按下了我的自定义事件
  • 我的 View Controller 出现
  • 我叫activityDidFinish:
  • 我的自定义 View Controller 已关闭
  • 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/

    相关文章:

    iphone - 修改 xcode 字符串文件 post Archive : Converting Binary to UTF-8

    iphone - 如何查看以编程方式创建的 UIButton 的标签

    ios - 强制手动关闭 iOS 共享表 Swift iOS 8 和 9

    iOS 8 用户界面事件 : disable specific third-party sharers?

    ipad - iPad Safari HTML5音频播放

    iphone - 将通用应用程序作为缩放的 iPhone 应用程序运行?

    iphone - iOS 6 CoreLocation 不起作用

    ios - Objective-C - InputStream 到 NSString

    ios - 具有内置邮件外观的自定义 UIActivity

    iphone - iOS 模拟器 - 如何将默认模拟器设置为 iPhone