使用UIWebView从HTML代码调用目标c代码中的方法

我的iOS应用程序中有.html文件。 HTML文件几乎没有使用onClick方法的div块。 当我点击这些块,我在Web视图中调用一些JavaScript代码,但我也需要知道在我的源代码中的这些事件。

例如,当我点击web元素和onClick被调用时,我需要在代码中调用一些方法,例如- (void)didTouchedWebElementWithId

我可以做这个东西吗? 谢谢。

在JS中调用Objective-C的方法:

下面的url有助于做到这一点

如何从Javascript调用Objective C方法并在iOS中将数据发送回Javascript?

有没有办法执行,我们通过导航到其他页面,并在导航过程中,一个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页面中的button时,下面的委托会被触发,导航取消,因为我们返回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 ]; }