【问题标题】:Call action from UIWebView with JavaScript使用 JavaScript 从 UIWebView 调用操作
【发布时间】:2011-06-21 08:49:24
【问题描述】:

我正在尝试构建一个将图像上传到我的网站的简单应用程序。我正在使用本教程: http://www.youtube.com/watch?v=aQXaJO36I7Y

我想要做什么,而不是使用应用程序界面中的按钮,我想在 web 视图中使用网站内的按钮。所以我想要一个按钮来调用相册的打开选择要上传的图片。

基本上,我需要一种 javascript 函数在应用程序本身中调用操作的方法。

我该怎么做?

【问题讨论】:

    标签: iphone c++ xcode cocoa-touch mobile


    【解决方案1】:

    您可以只使用自定义链接,然后您可以在 UIWebViewDelegate 方法中检测到该链接。

    - (BOOL) webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request 
                                                       navigationType:(UIWebViewNavigationType)navigationType {
    
        if (navigationType == UIWebViewNavigationTypeLinkClicked) {
            NSString *rawURL = [[request URL] absoluteString];
            if([rawURL isEqualToString:@"callImageLib://"]) {
                    [self methodeForImageLib];
            }     
            return NO;
        }
    
        return YES;
    }
    

    【讨论】:

    • 我似乎无法让shouldStartLoadWithRequest 触发,我添加 - NSLog(@"Ytest");一开始看看它是否会起作用,但它似乎并没有拦截到改变位置。我将代码放在 AppDelegate.m 中,顶部有 @synthesize webView;
    • 不要将代码放在 appdelegate 中,而是在 viewController 中显示 webview。然后设置self.webView.delegate = self;在 viewController 的viewDidLoad 中。
    • 我的 appdelegate 的窗口正在显示 webview?
    • 然后添加一个 ViewController,这是一种更好的代码溢出方式。或者,如果您真的想这样做,请将 webiview 的代表发送给您的 appDelegate。所以你在哪里创建 webView 使用:self.webView.delegate = self
    【解决方案2】:

    如果我理解正确,您需要与 iPHone Web 应用程序通信以调用本机 iPhone 应用程序,反之亦然。请检查以下链接。

    http://blog.techno-barje.fr/post/2010/10/06/UIWebView-secrets-part3-How-to-properly-call-ObjectiveC-from-Javascript

    http://iphoneincubator.com/blog/windows-views/how-to-inject-javascript-functions-into-a-uiwebview

    希望这 2 个链接有助于解决您的问题。

    【讨论】:

    猜你喜欢
    • 2012-02-11
    • 2012-05-24
    • 2013-03-31
    • 2014-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多