Wait for webview to finish load

Big html documents is now fully loaded when UIPrintInteractionController is presented
This commit is contained in:
Erik Wallin 2016-02-29 13:05:56 +01:00
parent 4723b6b297
commit 96f3d6f099
2 changed files with 14 additions and 7 deletions

View File

@ -23,7 +23,7 @@
#import <Cordova/CDVPlugin.h>
@interface APPPrinter : CDVPlugin
@interface APPPrinter : CDVPlugin <UIWebViewDelegate>
// Prints the content
- (void) print:(CDVInvokedUrlCommand*)command;

View File

@ -25,6 +25,7 @@
@interface APPPrinter ()
@property (retain) NSString* callbackId;
@property (retain) NSMutableDictionary* settings;
@end
@ -67,21 +68,26 @@
NSArray* arguments = [command arguments];
NSString* content = [arguments objectAtIndex:0];
NSMutableDictionary* settings = [arguments objectAtIndex:1];
self.settings = [arguments objectAtIndex:1];
UIPrintInteractionController* controller = [self printController];
NSString* printerId = [settings objectForKey:@"printerId"];
[self adjustPrintController:controller withSettings:settings];
[self adjustPrintController:controller withSettings:self.settings];
[self loadContent:content intoPrintController:controller];
}
- (void)webViewDidFinishLoad:(UIWebView *)webView
{
UIPrintInteractionController* controller = [self printController];
NSString* printerId = [self.settings objectForKey:@"printerId"];
if (printerId) {
[self sendToPrinter:controller printer:printerId];
}
else {
CGRect rect = [self convertIntoRect:[settings objectForKey:@"bounds"]];
CGRect rect = [self convertIntoRect:[self.settings objectForKey:@"bounds"]];
[self presentPrintController:controller fromRect:rect];
}
}
@ -163,6 +169,7 @@
- (void) loadContent:(NSString*)content intoPrintController:(UIPrintInteractionController*)controller
{
UIWebView* page = [[UIWebView alloc] init];
page.delegate = self;
UIPrintPageRenderer* renderer = [[UIPrintPageRenderer alloc] init];
[self adjustWebView:page andPrintPageRenderer:renderer];