iOS:如何覆盖UIWebView的按钮操作并调用我们自己的Objective C方法

时间:2016-07-22 11:24:18

标签: ios iphone swift xcode

我在iOS中的UIWebView中加载了一个url。网址包含一个按钮。当我点击这个按钮时,我想调用一个客观的C方法。请帮忙。

3 个答案:

答案 0 :(得分:1)

这是源代码

NSString *strUrl = @"<html><body><button type=\"button\" id=\"success_id\" style=\"width:200px;margin:0px auto;text-align:center; background:#1B2F77;color:#fff;padding:10px;font-size:10px;border:0px;\" name=\"continue\" onclick=\"ok.performClick();\">Continue</button></body></html>";
[_tempWebView loadHTMLString:strUrl baseURL:nil];

我想将此字符串加载到UIWebview,当我点击按钮时,我想打开自己的viewcontroller。

答案 1 :(得分:0)

如果是您的页面,请通过JavaScript与app通信,否则您可以覆盖shouldStartLoadWithRequest方法并检查是否调用了此特定请求 一些代码:

- (BOOL)isItThatButtonEvent:(NSURLRequest *)req {
    if([req.URL.absoluteString isEqualString:@"that.specific.url.or.some.other.way.to.check.that"]) {
        return YES;
    }
    return NO;
}

#pragma mark UIWebViewDelegate
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {

    if([self isItThatButtonEvent:request]) {
        [self methodThatOpensYourViewController];
        return NO;
    }

    return YES;
}

答案 2 :(得分:0)

你需要做三件事:

  1. 覆盖shouldStartLoadWithRequest。{/ li>的UIWeBView委托方法
  2. shouldStartLoadWithRequest方法返回bool值,因此返回false,然后它不会加载链接。
  3. 在此方法内部编写您要执行的任何功能。