如何在 iPad 上使用 JavaScript/Obj-C 将图像保存到照片库?
Posted
技术标签:
【中文标题】如何在 iPad 上使用 JavaScript/Obj-C 将图像保存到照片库?【英文标题】:How to save image to Photo gallery using JavaScript/Obj-C on iPad? 【发布时间】:2011-06-29 14:20:54 【问题描述】:我目前正在 iPad 上开发一个基于 javascript 的小型绘图应用程序。我只是像this 一样将它包装在 UIWebView 中。现在的问题是,我不知道如何从应用程序中保存图像,以便将其存储在 iPad 照片上。
有没有一些简单的方法可以将 JavaScript 代码与 Objective-C 连接起来?我想我可以从 JS 端传递一个包含 PNG 图像数据的字符串,然后使用 Objective-C 以某种方式将其保存到照片库中。
【问题讨论】:
【参考方案1】:是的,有一种方法可以将 JavaScript 从 UIWebView 桥接到 Obj-C 代码。
设置您的 UIWebView 委托,并在您的委托中粘贴以下方法
//
// 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 方法。例如。在您的网络视图中,您可能有一个按钮,该按钮具有类似的链接标签
<a href="file://myGreatApp.com/saveImage">Click Me to Save Image </a>
方案是“文件”,片段是“saveImage”。你现在可以编写一个 Obj-C 方法
-(void)saveImage;
每次用户点击链接时都会调用它。
编辑: 如果您想在您的方法中传递字符串参数,只需使用 javascript 将它们附加到您的片段 url。所以你可能有
<a href="file://myGreatApp.com/saveImage*asdgo8asdgl35lkjasgd807ll12">Click Me to Save Image </a>
然后在您的 Obj-C 代码中,在字符“*”上拆分片段。使用前半部分作为选择器,后半部分作为参数。
【讨论】:
知道如何将数据(实际上只是一个字符串)从 JS 应用程序传递到 Obj-C 吗?我可能错过了这里的重点。不过谢谢你的回答。 :) 使用字符分隔符并将其附加到您的片段中。所以使用 javascript 来动态地制作你的链接 href file://myGreatApp.com/saveImageimgdataimgdataimgdataimgdata。然后在 obj c 代码中,您将通过 '' 分割片段。前半部分成为您的选择器“saveImage”,而后半部分成为您在选择器中传递的字符串对象。 我最终使用了这个解决方案,blog.techno-barje.fr/post/2010/10/06/…。以上是关于如何在 iPad 上使用 JavaScript/Obj-C 将图像保存到照片库?的主要内容,如果未能解决你的问题,请参考以下文章
上传图像文件时如何禁用捕获(在 ipad 上使用 safari)
如何在 iPad 上关闭 UIImagePickerController?