UIActivityViewController

UIActivityViewController

在下面的屏幕截图中,一些数据已通过AirDrop成功发送。 UIActivityViewController更新为在收件人下方显示“已发送”,并且“取消”更改为“完成”。

ios - (在AirDrop之后)明确关闭UIActivityViewController是否正确/可行?-LMLPHP


在这种情况下,当前的视图控制器关闭UIActivityViewController是否正确/良好做法/可行?
还是应该将该任务留给用户(和“完成”按钮)?


UIActivityViewController上的Apple文档中:


  您的应用负责配置,展示和关闭该视图控制器。


如果在AirDrop案例中应该取消UIActivityViewController,是否应将完成处理程序用于此目的?

@property(nonatomic, copy) UIActivityViewControllerCompletionWithItemsHandler completionWithItemsHandler


相关问题:


UIActivityViewController completion handler is !completed when using AirDrop
UIActivityViewController completionHandler how to check if activity send or not successfully?

最佳答案

在进一步考虑了文档以及使用内置活动(例如UIActivityTypeMail)或第三方UIActivity时的事件流之后,我认为以下...

1)AirDrop是一种特殊情况,因为用户的交互是在UIActivityViewController本身内执行的。 UIActivityViewController中的UI会相应更新,并且应用程序应保留对用户关闭UIActivityViewController的权限(以及“取消/完成”按钮)。

2)完成处理程序旨在在UIActivityViewController被取消后使用...

...而不是为了消除UIActivityViewController

为了进行实验,我添加了以下代码:

[controller setCompletionWithItemsHandler:^(NSString *activityType, BOOL completed, NSArray *returnedItems, NSError *activityError) {
    NSLog(@"completed: %@, \n%d, \n%@, \n%@,", activityType, completed, returnedItems, activityError);

}];



在AirDrop情况下,在点击Done(完成)并且UIActivityViewController被关闭(由用户)之后,我得到了log语句-不是在AirDrop操作完成(并显示“已发送”)之后。
如果我使用内置活动(例如UIActivityTypeMail)或自定义第三方选项,则当用户完成操作时,这些操作(a)会显示其他UI,并且(b)会导致UIActivityViewController被关闭用户界面。


在这两种情况下,UIActivityViewController消失后我都会得到log语句。

关于Accessing the Completion Handler的文档实际上非常清楚:


  关闭活动视图控制器后要执行的完成处理程序。


@property(nonatomic, copy) UIActivityViewControllerCompletionWithItemsHandler completionWithItemsHandler



  讨论区
  当用户选择的服务完成对数据的操作时,或者当用户关闭视图控制器时,视图控制器将执行此完成处理程序,以使您的应用知道操作的最终结果。


我想如果这部分可能更清楚:


  当用户选择的服务完成对数据的操作时...


指示用户选择的服务完成将导致视图控制器被解雇。

3)来自Apple关于UIActivityViewController的文档中的以下内容有些误导:


  您的应用负责配置,展示和关闭该视图控制器。

关于ios - (在AirDrop之后)明确关闭UIActivityViewController是否正确/可行?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31787477/

10-12 03:44