javascript - 如何在 iPad 上使用 JavaScript/Obj-C 将图像保存到照片库?

标签 javascript objective-c ios ipad

我目前正在 iPad 上开发一个基于 JavaScript 的小型绘图应用程序。我只是将它包装在 UIWebView 中,如 this .现在的问题是,我不知道如何从应用程序中保存图像,以便将其存储在 iPad 照片上。

是否有一些简单的方法可以将 JavaScript 代码与 Objective-C 代码连接起来?我想我可以从 JS 端传递一个包含 PNG 图像数据的字符串,然后使用 Objective-C 以某种方式将其保存到照片库。

最佳答案

是的,有一种方法可以将 JavaScript 从 UIWebView 桥接到 Obj-C 代码。

设置您的 UIWebView 委托(delegate),并在您的委托(delegate)中粘贴以下方法

//
// 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;
}

然后您可以编写 Obj-C 方法来处理请求。例如。在您的 WebView 中,您可能有一个带有链接标记的按钮,例如

<a href="file://myGreatApp.com/saveImage">Click Me to Save Image </a>

方案是“file”,片段是“saveImage”。您现在可以编写 Obj-C 方法

-(void)saveImage;

每次用户单击链接时都会调用该函数。

编辑: 如果您想在方法中传递字符串参数,只需使用 javascript 将它们附加到片段 url 中即可。所以你可能有

<a href="file://myGreatApp.com/saveImage*asdgo8asdgl35lkjasgd807ll12">Click Me to Save Image </a>

然后在 Obj-C 代码中,在字符“*”上分割片段。使用前半部分作为选择器,后半部分作为参数。

关于javascript - 如何在 iPad 上使用 JavaScript/Obj-C 将图像保存到照片库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6522228/

相关文章:

objective-c - 从 Objective-C 中的数组中消除连续重复项的最快方法

ios - 在 Sprite Kit 场景中隐藏 iAd

ios - 限制每个 View Controller 的方向

javascript - Canvas 另存为图像 [canvg - 在 Canvas 上渲染 svg]

javascript - 将外部页面滑动到当前页面顶部

javascript - 如何给galleria big image加边框?

ios - 在没有 mac os 的情况下构建 iOS 应用程序?

javascript - 为 Google Assistant 执行命令 - Node js

ios - 使用 awakeAfterUsingCoder 方法查看占位符替换为 xib

ios - 使用电子表格 Google Sheets API 创建新工作表