【问题标题】:Is it Correct / Possible to Explicitly Dismiss a UIActivityViewController (after AirDrop)?显式关闭 UIActivityViewController 是否正确/可能(在 AirDrop 之后)?
【发布时间】:2015-08-03 12:37:57
【问题描述】:

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

  • 在这种情况下,呈现视图控制器关闭UIActivityViewController 是否正确/良好做法/可能?
  • 或者该任务应该留给用户(以及完成按钮)?

来自 Apple 在UIActivityViewController 上的文档:

您的应用负责配置、呈现、和关闭此视图控制器。

如果 UIActivityViewController 在 AirDrop 情况下应该被解除,完成处理程序是否应该用于此目的?

@property(nonatomic, copy) UIActivityViewControllerCompletionWithItemsHandler completionWithItemsHandler

相关问题:

【问题讨论】:

    标签: ios cocoa-touch airdrop


    【解决方案1】:

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

    1) AirDrop 是一种特殊情况,因为用户的交互是在UIActivityViewController 本身内执行的。 UIActivityViewController 中的 UI 会相应更新,并且应用程序应将关闭 UIActivityViewController 留给用户(以及 Cancel / Done 按钮)。

    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 被关闭(由用户) - 而不是在 AirDrop 操作完成后(并且 “已发送” 显示)。
    • 如果我使用内置活动(例如 UIActivityTypeMail)或自定义的第三方选项,这些操作 (a) 会显示额外的 UI 并且 (b) 会导致 UIActivityViewController 被关闭,当用户以该 UI 结束。

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

    关于Accessing the Completion Handler 的文档其实很清楚:

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

    @property(nonatomic, copy) UIActivityViewControllerCompletionWithItemsHandler completionWithItemsHandler
    

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

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

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

    表示用户选择的服务完成将导致视图控制器的关闭。

    3) 以下来自 Apple 在 UIActivityViewController 上的文档有点误导

    您的应用负责配置、呈现、和关闭此视图控制器。

    【讨论】:

      猜你喜欢
      • 2016-08-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-11
      • 1970-01-01
      • 2020-07-19
      • 2012-05-12
      • 2015-12-20
      相关资源
      最近更新 更多