1

目前我正在使用以下代码来实例化 UIActivityViewController:

NSArray *itemsToShare = [[NSArray alloc] initWithObjects:bodyMessage, nil];
        UIActivityViewController *activityVC = [[UIActivityViewController alloc] initWithActivityItems:itemsToShare applicationActivities:nil];
        activityVC.excludedActivityTypes = [[NSArray alloc] initWithObjects: UIActivityTypePrint, UIActivityTypeCopyToPasteboard, UIActivityTypeAssignToContact, UIActivityTypeSaveToCameraRoll, UIActivityTypePostToWeibo,UIActivityTypePostToFacebook,UIActivityTypePostToTwitter, nil];
        [activityVC setValue:subject forKey:@"subject"];
        [self presentViewController:activityVC animated:YES completion:nil];


        [activityVC setCompletionHandler:^(NSString *activityType, BOOL done)
         {

             NSString *ServiceType;
             if ( [activityType isEqualToString:UIActivityTypeMail] )           ServiceType = @"Mail.";
             if ( [activityType isEqualToString:UIActivityTypeMessage] )  ServiceType = @"Messenger.";

             NSMutableString *shareWithActivityResultMessage;
             NSString *alertTitle;
             if (done)
             {
                 alertTitle = @"Success!";

                 shareWithActivityResultMessage = [NSMutableString stringWithString:successMessage];
                 [shareWithActivityResultMessage appendString:ServiceType];
             }
             else
             {
                 // didn't succeed.
                 alertTitle = @"Error";
                 shareWithActivityResultMessage = [NSMutableString stringWithString:errorMessage];
             }

当我取消撰写时,会触发 ActivityVCdone = false并因此触发错误消息。有没有办法检测取消而不是发送消息时的实际错误?

4

1 回答 1

2

您可以在 iOS 8 中使用新的 UIActivityViewControllerCompletionWithItemsHandler 类型:

activityVC.completionWithItemsHandler = ^(NSString *activityType, BOOL completed, NSArray *returnedItems, NSError *activityError){
    ...
}

只需检查 activityError 属性

于 2014-12-09T03:53:22.883 回答