在 iOS 6 中使用客户 UIActivity 子类时,可以指定一个自定义视图控制器,当您从初始 UIActionViewController 的视图中选择您的操作时将显示该控制器。您可以通过从 UIActivity 子类的activityViewController
方法返回对自定义视图控制器的引用来执行此操作。
活动视图控制器
此方法的默认实现返回
nil
. 使用视图控制器提供额外 UI 的子类可以重写此方法以返回该视图控制器。如果此方法返回一个有效对象,系统会为您呈现返回的视图控制器,而不是调用该performActivity
方法。在 iPad 上,您的视图控制器显示在弹出框内。在 iPhone 和 iPod touch 上,您的视图控制器以模态方式呈现。您的自定义视图控制器应该为您的自定义 UI 提供一个视图,并且应该处理这些视图中的任何用户交互。完成活动后,不要自行关闭视图控制器。相反,调用该
activityDidFinish:
方法并让系统为您解除它。
请注意第一段末尾的那一点:在 iPad 上,您的视图控制器显示在弹出框内。在 iPhone 和 iPod touch 上,您的视图控制器以模态方式呈现。
但是,在 iPad 上activityViewController
,无论我如何呈现 UIActivityViewController(模态或通过弹出框),返回的视图控制器总是模态显示。通过弹出框呈现时,它会导致它崩溃,因为它认为它没有被解雇。
我究竟做错了什么?这是 iOS 6 中的错误吗?
更新:这是一个说明问题的简单 Xcode 项目。随意克隆它,看看你是否能看出我们哪里出错了:github.com/simonwhitaker/GSActivityDemo