Call a method by clicking a button in a UIWebView

旧城冷巷雨未停 提交于 2019-12-03 15:00:47

Just to follow up on this, it is possible, and not to difficult to connect HTML/javascript events to objective-c methods.

Damien Berrigaud came up with a good example of how to do that by using file:// links

// Map links starting with file://
//            ending with #action
// with the action of the controller if it exists.
//
// Open other links in Safari.
- (BOOL)webView: (UIWebView*)webView shouldStartLoadWithRequest: (NSURLRequest*)request navigationType: (UIWebViewNavigationType)navigationType {
  NSString *fragment, *scheme;

  if (navigationType == UIWebViewNavigationTypeLinkClicked) {
    [webView stopLoading];
    fragment = [[request URL] fragment];
    scheme = [[request URL] scheme];

    if ([scheme isEqualToString: @"file"] && [self respondsToSelector: NSSelectorFromString(fragment)]) {
      [self performSelector: NSSelectorFromString(fragment)];
      return NO;
    }

    [[UIApplication sharedApplication] openURL: [request URL]];
  }

  return YES;
}

This link http://davinc.me/post/45670387932/call-ios-method-for-html-button-click help me to resolve the same problem.

For button

<a href="didTap://button1"><img src="button1.jpg" /></a>

Then become delegate of

UIWebView

and then use

    - (BOOL)webView:(UIWebView*)aWebView shouldStartLoadWithRequest:(NSURLRequest*)request navigationType:(UIWebViewNavigationType)navigationType
{
    NSString *absoluteUrl = [[request URL] absoluteString];
    if ([absoluteUrl isEqualToString:@"didTap://button1"]) {
        [self didTapButton1];
        return NO;
    }
    return YES;
}

Take a look at the phonegap project: www.phonegap.com

It is designed to do this kind of thing and more. If anything you will be able to get an idea how to code this as the project is open source.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!