簡體   English   中英

UIWebView 中的 Javascript 回調到 C/Objective-C

[英]Javascript in UIWebView callback to C/Objective-C

當在 UIWebView 中檢測到某個事件時,有沒有辦法回調到objective-c? Javascript 可以向 Objective-C 發送回調嗎?

更新 - 不再使用 UIWebView。 使用 WKWebView,或者更好的(如果它滿足您的需求並且您正在為 iOS 9 構建),一個 Safari 視圖控制器。

但是如果你必須使用 UIWebView,在你的 UIWebView 委托中,提供webView:shouldStartLoadWithRequest:navigationType 的實現:

在您的 HTML 或 Javascript 文件中,添加將 URL 發送到自定義方案的函數(出於可讀性目的,不需要自定義方案)。 所有發送的 URL 都會傳遞給你的 Objective-C 方法實現,然后你就可以做你想做的了。

只是為了用實際代碼說明“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 而不是普通鏈接來觸發它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM