Обработчик событий javascript в uiwebview - PullRequest
15 голосов
/ 29 июля 2011

Я показываю один UIWebView в моем приложении iPhone.В UIWebView я отображаю HTML-страницу, которая также имеет JavaScript.Я хочу вызвать метод (из X-кода), когда на HTML-странице нажимается одна кнопка.Спасибо

Ответы [ 2 ]

38 голосов
/ 29 июля 2011

Если я правильно понимаю ваш вопрос, вы хотите вызвать метод Objective C из обработчика событий javascript onClick в вашем UIWebView. Способ сделать это состоит в том, чтобы перенаправить браузер на URL-адрес с пользовательской схемой в вашем коде JavaScript следующим образом:

function buttonClicked() {
    window.location.href = "yourapp://buttonClicked";
}

Вернувшись к Задаче C, объявите, что ваш контроллер представления соответствует протоколу UIWebViewDelegate,

@interface DTWebViewController : DTViewController <UIWebViewDelegate> {
...

установить ваш контроллер в качестве делегата веб-представления,

- (void)viewDidLoad {
    [super viewDidLoad];
    self.webView.delegate = self;
}

и перехватите URL-адрес до его загрузки следующим образом:

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
    if ([[request.URL scheme] isEqual:@"yourapp"]) {
        if ([[request.URL host] isEqual:@"buttonClicked"]) {
            [self callYourMethodHere];
        }
        return NO; // Tells the webView not to load the URL
    }
    else {
        return YES; // Tells the webView to go ahead and load the URL
    }
}
1 голос
/ 23 января 2018

Swift Version

webView.delegate = self

extension ViewController: UIWebViewDelegate {
    func webView(_ webView: UIWebView, shouldStartLoadWith request: URLRequest, navigationType: UIWebViewNavigationType) -> Bool {
        if request.description == "yourappname://buttonClicked" {

            // do your stuff here
            return false
        }
        return true
    }    
}

Пример HTML

<a href="yourappname://buttonClicked">
    <img src="http://someurl.com/table_desktop.jpg"/ width="100%">
</a>

Если вы хотите узнать, как это сделать в wkWebViewвот ссылка

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...