1
目前我使用下面的代碼實例化一個UIActivityViewController檢測錯誤: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];
}
當我取消作曲,在ActivityVC done = false
,因此錯誤信息被觸發。有沒有辦法檢測取消,而不是發送消息中的實際錯誤?
該文檔明確指出,即使用戶取消完成處理程序被調用。在這種情況下,「完成」將是「否」。這並不表示有錯誤。你不應該因爲'done'是'NO'而顯示錯誤提示。事實上,'UIActivityViewController'不會給出任何類型的錯誤。 – rmaddy