明确关闭 UIActivityViewController 是否正确/可能(在 AirDrop 之后)?
Is it Correct / Possible to Explicitly Dismiss a UIActivityViewController (after AirDrop)?
在下面的屏幕截图中,一些数据已通过 AirDrop 成功发送。 UIActivityViewController
更新为在收件人下方显示 "Sent",取消 更改为 完成.
- 在这种情况下,呈现视图控制器关闭
UIActivityViewController
是否正确/良好做法/可能?
- 还是应该将该任务留给用户(以及 完成 按钮)?
来自 UIActivityViewController
上的 Apple 文档:
Your app is responsible for configuring, presenting, and dismissing this view controller.
如果 UIActivityViewController
应该在 AirDrop 案例中被取消,完成处理程序是否应该用于此目的?
@property(nonatomic, copy) UIActivityViewControllerCompletionWithItemsHandler completionWithItemsHandler
相关问题:
- UIActivityViewController completion handler is !completed when using AirDrop
- UIActivityViewController completionHandler how to check if activity send or not successfully?
在进一步考虑文档以及使用内置 activity(例如 UIActivityTypeMail
)或第三方 UIActivity
时的事件流之后,我认为以下...
1) AirDrop 是一种特殊情况,因为用户的交互是在UIActivityViewController
本身内执行的。 UIActivityViewController
中的 UI 会相应更新,应用程序应将 UIActivityViewController
留给用户(以及 Cancel / 完成 个按钮)。
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 操作完成之后(并且显示 "Sent")。
- 如果我使用内置的 activity(例如
UIActivityTypeMail
)或自定义的第三方选项,这些操作 (a) 提供额外的 UI 和 (b)当用户完成 UI. 时,导致 UIActivityViewController
被关闭
在这两种情况下,我都会在 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...
表示用户选择的服务完成将导致视图控制器的关闭。
3) 以下来自 Apple 关于 UIActivityViewController 的文档有点误导 :
Your app is responsible for configuring, presenting, and dismissing this view controller.
在下面的屏幕截图中,一些数据已通过 AirDrop 成功发送。 UIActivityViewController
更新为在收件人下方显示 "Sent",取消 更改为 完成.
- 在这种情况下,呈现视图控制器关闭
UIActivityViewController
是否正确/良好做法/可能? - 还是应该将该任务留给用户(以及 完成 按钮)?
来自 UIActivityViewController
上的 Apple 文档:
Your app is responsible for configuring, presenting, and dismissing this view controller.
如果 UIActivityViewController
应该在 AirDrop 案例中被取消,完成处理程序是否应该用于此目的?
@property(nonatomic, copy) UIActivityViewControllerCompletionWithItemsHandler completionWithItemsHandler
相关问题:
- UIActivityViewController completion handler is !completed when using AirDrop
- UIActivityViewController completionHandler how to check if activity send or not successfully?
在进一步考虑文档以及使用内置 activity(例如 UIActivityTypeMail
)或第三方 UIActivity
时的事件流之后,我认为以下...
1) AirDrop 是一种特殊情况,因为用户的交互是在UIActivityViewController
本身内执行的。 UIActivityViewController
中的 UI 会相应更新,应用程序应将 UIActivityViewController
留给用户(以及 Cancel / 完成 个按钮)。
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 操作完成之后(并且显示 "Sent")。 - 如果我使用内置的 activity(例如
UIActivityTypeMail
)或自定义的第三方选项,这些操作 (a) 提供额外的 UI 和 (b)当用户完成 UI. 时,导致
UIActivityViewController
被关闭
在这两种情况下,我都会在 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...
表示用户选择的服务完成将导致视图控制器的关闭。
3) 以下来自 Apple 关于 UIActivityViewController 的文档有点误导 :
Your app is responsible for configuring, presenting, and dismissing this view controller.