@@ -86,7 +86,10 @@ - (dispatch_queue_t)methodQueue
8686
8787 if (_pickedPrinter) {
8888 [printInteractionController printToPrinter: _pickedPrinter completionHandler: completionHandler];
89- } else {
89+ } else if ([UIDevice currentDevice ].userInterfaceIdiom == UIUserInterfaceIdiomPad) { // iPad
90+ UIView *view = [[UIApplication sharedApplication ] keyWindow ].rootViewController .view ;
91+ [printInteractionController presentFromRect: view.frame inView: view animated: YES completionHandler: completionHandler];
92+ } else { // iPhone
9093 [printInteractionController presentAnimated: YES completionHandler: completionHandler];
9194 }
9295}
@@ -99,23 +102,30 @@ - (dispatch_queue_t)methodQueue
99102
100103 printPicker.delegate = self;
101104
102- [printPicker presentAnimated: YES completionHandler:
103- ^(UIPrinterPickerController *printerPicker, BOOL userDidSelect, NSError *error) {
104- if (!userDidSelect && error) {
105- NSLog (@" Printing could not complete because of error: %@ " , error);
106- reject (RCTErrorUnspecified, nil , RCTErrorWithMessage (error.description ));
107- } else {
108- [UIPrinterPickerController printerPickerControllerWithInitiallySelectedPrinter: printerPicker.selectedPrinter];
109- if (userDidSelect) {
110- _pickedPrinter = printerPicker.selectedPrinter ;
111- NSDictionary *printerDetails = @{
112- @" name" : _pickedPrinter.displayName ,
113- @" url" : _pickedPrinter.URL .absoluteString ,
114- };
115- resolve (printerDetails);
116- }
117- }
118- }];
105+ void (^completionHandler)(UIPrinterPickerController *, BOOL , NSError *) =
106+ ^(UIPrinterPickerController *printerPicker, BOOL userDidSelect, NSError *error) {
107+ if (!userDidSelect && error) {
108+ NSLog (@" Printing could not complete because of error: %@ " , error);
109+ reject (RCTErrorUnspecified, nil , RCTErrorWithMessage (error.description ));
110+ } else {
111+ [UIPrinterPickerController printerPickerControllerWithInitiallySelectedPrinter: printerPicker.selectedPrinter];
112+ if (userDidSelect) {
113+ _pickedPrinter = printerPicker.selectedPrinter ;
114+ NSDictionary *printerDetails = @{
115+ @" name" : _pickedPrinter.displayName ,
116+ @" url" : _pickedPrinter.URL .absoluteString ,
117+ };
118+ resolve (printerDetails);
119+ }
120+ }
121+ };
122+
123+ if ([UIDevice currentDevice ].userInterfaceIdiom == UIUserInterfaceIdiomPad) { // iPad
124+ UIView *view = [[UIApplication sharedApplication ] keyWindow ].rootViewController .view ;
125+ [printPicker presentFromRect: view.frame inView: view animated: YES completionHandler: completionHandler];
126+ } else { // iPhone
127+ [printPicker presentAnimated: YES completionHandler: completionHandler];
128+ }
119129}
120130
121131#pragma mark - UIPrintInteractionControllerDelegate
0 commit comments