UIPrintInteractionController/UIDocumentInteractionController/UIImagePickerController presentation should be UIViewController-based

Originator:matthias.tretter
Number:rdar://17957280 Date Originated:08/08/2014
Status:Open Resolved:
Product:iOS SDK Product Version:iOS 8 Beta 5
Classification: Reproducible:Always
 
Summary:
The presentation of the above controllers is very limited and they provide different presentation methods for iPhone and iPad. Since iOS 8 userInterfaceIdiom is deprecated and shouldn't be considered, but the presentation of these controllers requires to differentiate between iPhones and iPad. 

These separate presentation methods make the presentation of those controllers very restricted and don't work well in conjunction with size classes. It should be possible to present these controllers and add them to the view hierarchy like any other UIViewController.

Steps to Reproduce:
Example for UIPrintInteractionController:

Presentation on the iPhone:
- (BOOL)presentAnimated:(BOOL)animated completionHandler:(UIPrintInteractionCompletionHandler)completion

Presentation on the iPad:
- (BOOL)presentFromBarButtonItem:(UIBarButtonItem *)item animated:(BOOL)animated completionHandler:(UIPrintInteractionCompletionHandler)completion

- (BOOL)presentFromRect:(CGRect)rect inView:(UIView *)view animated:(BOOL)animated completionHandler:(UIPrintInteractionCompletionHandler)completion

Those methods are clearly modeled after UIPopoverController, but since UIPrintInteractionController is a subclass of NSObject and not of UIViewController we are limited to use them.

The provided delegate method

- (UIViewController *)printInteractionControllerParentViewController:(UIPrintInteractionController *)printInteractionController

makes the presentation cumbersome to use and still unflexible.

Expected Results:
UIPrintInteractionController, UIDocumentInteractionController, UIImagePickerController (and any other controller I might have missed) are all UIViewController subclasses and can be presented with

- (void)presentViewController:(UIViewController *)viewControllerToPresent animated:(BOOL)flag completion:(void (^)(void))completion

or added as a child view controller anywhere in the view controller hierarchy.

Actual Results:
custom presentation methods for UIPrintInteractionController/UIDocumentInteractionController and limited presentation possibilities of UIImagePickerController (iPad: Popover/Fullscreen, iPhone: Fullscreen)

Version:
iOS 8 Beta 5

Notes:


Configuration:
all hardware

Attachments:

Comments


Please note: Reports posted here will not necessarily be seen by Apple. All problems should be submitted at bugreport.apple.com before they are posted here. Please only post information for Radars that you have filed yourself, and please do not include Apple confidential information in your posts. Thank you!