Динамические методы UIWebView <UIWebViewDelegate> не вызываются, даже если делегат установлен и регистрируется

Я звоню UIView (создание и добавление в стек) динамически из NSObject класс, который обрабатывает "сбор данных" из различных источников в UIViewController для UIView Я только что создал. UiViewController принимает данные (которые возвращаются как HTML а также CSS) и присваивает его UIWebview - и все это прекрасно работает и выглядит великолепно.

Весь смысл всего этого, это отправить веб-страницу на принтер. Но методы печати не запускаются в UIViewController выше, потому что они находятся в UIWebViewDelegate методы. Я должен ждать его загрузки:

-(void)webViewDidFinishLoad:(UIWebView *)webView{
DLog(@"WEB VIEW LOADED!!");

if ([[self.webview stringByEvaluatingJavaScriptFromString:@"document.readyState"] isEqualToString:@"complete"]) {

    UIImage *image = [self imageFromWebview:self.webview];

    DLog(@"FINISHED!!");
    for (NSDictionary *printer in self.existingPrinters) {
        //Print here
        }
    }


}
}

Это то, что я сделал, что не сработало: (У меня есть <UIWebViewDelegate> в.h файле webview это синтезированный сильный (я тоже пытался сохранить), неатомное свойство)

Первым делом я попытался назначить делегата на веб-просмотр в viewWillAppear метод, то я впоследствии попробовал viewDidAppear а также viewDidLoad; установив делегата так self.webview.delegate = self; и (я тоже пробовал) [self.webview setDelegate:self];

Затем я попытался сделать .xib файл и вызов представления таким образом; прикрепление веб-вида к files owner и установка делегата в застройщике.

WebViewPrintViewController *printerController = (WebViewPrintViewController *)[[WebViewPrintViewController alloc]initWithNibName:@"WebViewPrintViewController" bundle:[NSBundle mainBundle]];

Я даже пытался установить делегата от NSObject учебный класс:

[webPrintVC.webview setDelegate:webPrintVC];

Затем я попытался использовать StoryBoard называя представление "долгий путь"

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
WebViewPrintViewController *myVC = (WebViewPrintViewController *)[storyboard instantiateViewControllerWithIdentifier:@"WebViewPrintController"];

... каждый раз, когда вызывается представление, а методы делегата веб-просмотра - нет!

Я даже пытался добавить sleep(2); различные методы, чтобы увидеть, могу ли я заставить View ждать viewController в другом потоке, используя различные dispatch_async/ основные комбинации потоков...

-(void)viewDidAppear:(BOOL)animated{

DLog(@"VIEW DID APPEAR!");
    //self.webview.frame = CGRectMake(self.webview.frame.origin.x, self.webview.frame.origin.y-self.webview.frame.size.height-25, self.webview.frame.size.width, self.webview.frame.size.height);
self.webview.delegate = self;
[self.view setNeedsDisplay]; //another desperate attempt to evoke the delegate methods

}

-(void)viewWillAppear:(BOOL)animated{
[super viewWillAppear:YES];

self.webview.delegate = self;

[self.webview loadHTMLString:HTML baseURL: nil];
[self.view addSubview:self.webview];

DLog(@"VIEW WILL APPEAR!");

}

Также, когда я использую .xib файл делегата установлен, как видно из этого Dlog заявление:

DLog(@"WEBVIEWCONTROLLER LOADED!!! WHATS THE DELEGATE OF THE WEB VIEW : %@ THIS IS SELF : %@", self.webview.delegate, self);

Это результат:

2014-07-11 08:32:21.708 pos[14292:60b] -[WebViewPrintViewController viewDidLoad] [Line 54] WEBVIEWCONTROLLER LOADED!!! WHATS THE DELEGATE OF THE WEB VIEW : <WebViewPrintViewController: 0xc202c0> THIS IS SELF : <WebViewPrintViewController: 0xc202c0>

Я в растерянности... кто-нибудь может помочь?

Мне нужно получить UIWebViewDelegate методы работы. Спасибо!

Кит

0 ответов

Другие вопросы по тегам