代码之家  ›  专栏  ›  技术社区  ›  LK.

uiwebview回调到c/objective-c中的javascript

  •  35
  • LK.  · 技术社区  · 15 年前

    当在uiwebview中检测到某个事件时,是否有一种方法可以回调到objective-c?javascript可以向Objective-C发送回调吗?

    2 回复  |  直到 9 年前
        1
  •  31
  •   bpapa    9 年前

    更新-不再使用uiwebview。使用wkwebview,或者更好的方法(如果它符合您的需要,并且您正在为iOS 9构建),一个Safari视图控制器。

    但是,如果必须使用uiWebView,请在uiWebView委托中提供 webView:shouldStartLoadWithRequest:navigationType:

    在HTML或JavaScript文件中,添加向自定义方案发送URL的函数(出于可读性目的,不需要自定义方案)。发送的所有URL都将传递给您的Objective-C方法实现,然后您可以做您想做的事情。

        2
  •  30
  •   geon    13 年前

    只需用实际代码“bpapa”来说明解决方案:

    警告:未测试代码

    在UIWebView的委托中实现此方法…

    -(BOOL) webView:(UIWebView *)inWeb shouldStartLoadWithRequest:(NSURLRequest *)inRequest navigationType:(UIWebViewNavigationType)inType {
        if ( [[[inRequest URL] scheme] isEqualToString:@"callback"] ) {
    
            // Do something interesting...
    
            return NO;
        }
    
        return YES;
    }
    

    …然后在Webwieb中放置如下链接:

    <a href="callback:whatever">Click me</a>
    

    它应该激活你的回调代码。显然,您可以用一个JavaScript而不是一个简单的链接来触发它。