Lack of a close button on UIActivityViewController

2019-07-18 00:01发布

问题:

I am currently doing some updates for an iOS application. For the update I am going to take advantage of iOS6 capabilities. I am using a UIActivityViewController to get this done as well as some custom UIActivity activities. The main issue I am having is that there is no "Cancel" or "Close" button. The only way you can exit out of the activity view is if you either post something to a social network, or act like you are going to and then cancel.

NSArray* dataToShare = [[NSArray alloc] initWithObjects:@"blah", nil];
// Custom activities are allocated here
NSArray* customActivities = [[NSArray alloc] initWithObjects:activities, nil];
NSArray* excludedActivities = [[NSArray alloc] initWithObjects:exclusions, nil];

activityController = [[UIActivityViewController alloc] initWithActivityItems:formatArray applicationActivities:customActivities];
activityController.excludedActivityTypes = excludedActivities;

activityController.modalPresentationStyle = UIModalPresentationFormSheet;
[[UIApplication sharedApplication].keyWindow addSubview:self.view];
[[UIApplication sharedApplication].keyWindow bringSubviewToFront:activityController.view];
[self presentViewController:activityController animated:YES completion:^{ closureCode
}];

This does everything that I need inside of the activity controller in terms of networking content, I just don't have a close button. I don't know if it is the same issue but when the view disappears if I try to bring one up my "Share" menu again it tells me

<UIActivityViewController: 0x1e0db7d0>  on <ShareDelegate: 0x1e048490> which is already presenting <UIActivityViewController: 0x21b1d4f0>

Thoughts? Thanks in advance!

*I am using:

  • iPad 2
  • Objective-C/C++
  • XCode 4.5
  • iOS6

回答1:

From the docs for UIActivityViewController (emphasis is mine):

When presenting the view controller, you must do so using the appropriate means for the current device. On iPad, you must present the view controller in a popover. On iPhone and iPod touch, you must present it modally.

On the iPad, the popover will be cancelled by the user tapping outside of the popover.

On the iPhone/iPod touch, the modal view controller will be shown with a cancel button.

In short, don't use a form sheet on the iPad.