gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 21:41:42 24 4
gpt4 key购买 nike

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

enter image description here

  • 在这种情况下,呈现 View Controller 关闭 UIActivityViewController 是否正确/良好做法/可能?
  • 还是应该将该任务留给用户(以及完成按钮)?

来自 Apple 的文档 UIActivityViewController :

Your app is responsible for configuring, presenting, and dismissing this view controller.

如果 UIActivityViewController 应该在 AirDrop 情况下被取消,是否应该为此目的使用完成处理程序?

@property(nonatomic, copy) UIActivityViewControllerCompletionWithItemsHandler completionWithItemsHandler

相关问题:

最佳答案

在进一步考虑文档以及使用内置事件(例如 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 的文档其实很清楚:

The completion handler to execute after the activity view controller is dismissed.

@property(nonatomic, copy) UIActivityViewControllerCompletionWithItemsHandler completionWithItemsHandler

Discussion When the user-selected service finishes operating on the data, or when the user dismisses the view controller, the view controller executes this completion handler to let your app know the final result of the operation.

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

When the user-selected service finishes operating on the data...

表示用户选择的服务完成将导致 View Controller 的关闭。

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

Your app is responsible for configuring, presenting, and dismissing this view controller.

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

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com