Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/117.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 检测UIActivityViewController的解除_Ios_Objective C_Xcode - Fatal编程技术网

Ios 检测UIActivityViewController的解除

Ios 检测UIActivityViewController的解除,ios,objective-c,xcode,Ios,Objective C,Xcode,我需要呈现一个视图,在UIActivityViewController移动到父VC之后 ... UIActivityViewController *avvc = [[UIActivityViewController alloc] initWithActivityItems:shareItems applicationActivities:nil]; [self presentViewController:avvc animated:YES completion:nil]; 希望这对您有所帮助。

我需要呈现一个视图,在UIActivityViewController移动到父VC之后

...
UIActivityViewController *avvc = [[UIActivityViewController alloc] initWithActivityItems:shareItems applicationActivities:nil];
[self presentViewController:avvc animated:YES completion:nil];

希望这对您有所帮助。

Swift 3版

avvc.completionWithItemsHandler = { (activityType, completed:Bool, returnedItems:[Any]?, error: Error?) in
   if completed {
      // Do something 
   }
}
Xamarin/C#
我只想澄清一下,布尔值
completed
表示单个
UIActivity
的完成状态。如果
UIActivityViewController
在没有任何操作的情况下被解除,则
activityType
的值将为
nil
,而completed的值将为
false

[avvc setCompletionWithItemsHandler:^(UIActivityType _Nullable activityType, BOOL completed,
                                      NSArray * _Nullable returnedItems,
                                      NSError * _Nullable activityError) {

    if (activityType == nil)    {
        NSLog(@"UIActivityViewController dismissed without any action.");
    } else {
        NSLog(@"completionWithItemsHandler, activityType: %@, completed: %d, returnedItems: %@, activityError: %@",
         activityType, completed, returnedItems, activityError);
    }
}];

布尔值
completed
表示单个
UIActivity
的完成状态。如果
UIActivityViewController
在不执行任何操作的情况下被解除,则
activityType
的值将为零,completed的值将为
false
。在OP的场景中,如果视图控制器取消共享活动,则视图控制器不会被解除。此答案现在已被弃用,使用下面的@Bijoy Thangaraj答案。更重要的是,每次操作完成时都会调用此完成,而不仅仅是在取消操作时
avvc.CompletionWithItemsHandler = MyCompletionWithItemsHandler;

// ...

void MyCompletionWithItemsHandler(NSString activityType, bool completed, NSExtensionItem[] returnedItems, NSError error)
{
    if (completed)
    {
        // Did not tap Cancel
    } 
    else
    {
        // Cancel was tapped
    }
}
[avvc setCompletionWithItemsHandler:^(UIActivityType _Nullable activityType, BOOL completed,
                                      NSArray * _Nullable returnedItems,
                                      NSError * _Nullable activityError) {

    if (activityType == nil)    {
        NSLog(@"UIActivityViewController dismissed without any action.");
    } else {
        NSLog(@"completionWithItemsHandler, activityType: %@, completed: %d, returnedItems: %@, activityError: %@",
         activityType, completed, returnedItems, activityError);
    }
}];