我的iOS应用程序中有.html文件。HTML文件具有少量带有onClick方法的div块。当我点击这些块时,我会在Web视图中调用一些javascript代码,但我还需要在源代码中了解这些事件。
例如,当我点击Web元素并调用onClick时,我需要在代码中调用某些方法,例如 - (void)didTouchedWebElementWithId
- (void)didTouchedWebElementWithId
我可以做这个东西吗?谢谢。
在JS中调用Objective-C的方法:
下面的网址有助于做到这一点
无法执行,我们通过导航到其他页面来解决,在导航期间,Webview委托将监视导航的前缀并执行我们指定的方法。
sample.html
<html> <head> <script type='text/javascript'> function getText() { return document.getElementById('txtinput').value; } function locationChange() { window.location = 'ios:webToNativeCall'; } </script> </head> <body style='overflow-x:hidden;overflow-y:hidden;'> <h2 style = "font-size:16px;" align='center'>Hi Welcome to Webpage</h2> <br/> <p align='center' style = "font-size:12px;">Please Click the button after entering the text</p> <br/> <center> <input type='text' style='width:90px;height:30px;' id='txtinput'/> </center> <br/> <center> <input type='button' style='width:90px;height:30px;' onclick='locationChange()' value='click me'> </center> </body> </html>
Objective-C代码
当您单击html页面中的按钮时,以下委托将被触发并取消导航,因为我们返回NO且调用了相应的方法
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType { if ([[[request URL] absoluteString] hasPrefix:@"ios:"]) { // Call the given selector [self performSelector:@selector(webToNativeCall)]; // Cancel the location change return NO; } return YES; } - (void)webToNativeCall { NSString *returnvalue = [self.webviewForHtml stringByEvaluatingJavaScriptFromString:@"getText()"]; self.valueFromBrowser.text = [NSString stringWithFormat:@"From browser : %@", returnvalue ]; }