Skip to content

Commit e32ae60

Browse files
kevinresolchristopherdro
authored andcommitted
Supports iPad (Closes #33) (#41)
Closes #33
1 parent 59bea64 commit e32ae60

1 file changed

Lines changed: 28 additions & 18 deletions

File tree

ios/RNPrint/RNPrint.m

Lines changed: 28 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)