2016-09-30 7 views
2

Я пытаюсь изменить свой UIWebView на WKWebView в моем приложении (Objective-C). я вижу WKWebView содержат тег «а» и внутри тега «а» содержит тег «образ»:iOS WKWebview, как определить, когда я нажимаю на изображение внутри <a> тег

<a href="http://click.adzcore.com/xyz"><img src="http://www.abc.xyz/smart/images/bnr/yyy.png" width="320" height="50" border="0" alt="+alt[n]+" onclick="_gaq.push(['_trackPageview','/smart/count/frognote']);"></a> 

Я хочу определить, когда пользователь нажимает на изображение, так что я:

- (void)webView:(WKWebView)webView decidePolicyForNavigationAction:(WKNavigationAction)navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler { 

    if (navigationAction.navigationType == WKNavigationTypeLinkActivated) { 
     NSURL *url = navigationAction.request.URL; 
     [[UIApplication sharedApplication] openURL:url]; 
     decisionHandler(WKNavigationActionPolicyCancel); 
     return; 
    } 
    decisionHandler(WKNavigationActionPolicyAllow); 
} 

Но этот код неверен, потому что WKNavigationTypeLinkActivated не улавливается, когда пользователь нажимает на изображение.

+0

@NeverHopeless: спасибо за ваш идеал, но я не могу контролировать html-код, потому что он возвращается с сервера. Я попытался использовать 'WKNavigationTypeOther', но это неверно, потому что, хотя вы не нажимаете изображение, вызывается событие click. – chaunv

+0

Для теста, как только вы получите этот html, попробуйте заменить тег в соответствии с моим предложением (и убедитесь, что только нужный тег заменяет :)) и сначала посмотрите, если он работает, вы можете обсудить эту проблему с командой сервера и удалите часть, если она не понадобится. – NeverHopeless

ответ

0

После исследования я нашел решение для решения моей проблемы. Я не использую WKNavigationTypeLinkActivated Чтобы поймать событие, нажмите на изображение.

Моего решения:

- (void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler { 

    if ([navigationAction.request.URL.relativeString hasPrefix:@"http://click.adzcore.com/"]) { 
     NSURL *url = navigationAction.request.URL; 
     [[UIApplication sharedApplication] openURL:url]; 
     decisionHandler(WKNavigationActionPolicyCancel); 
     return; 
    } 

    decisionHandler(WKNavigationActionPolicyAllow); 
} 

Это нормально для моей задачи :)