我目前正在iPad上开发一个基于JavaScript的小型绘图应用程序。我只是将它包装在像this这样的UIWebView中。现在问题是我无法弄清楚如何从应用程序中保存图像,以便将其存储在iPad照片上。
是否有一些简单的方法可以将JavaScript代码与Objective-C桥接起来?我想我可以从JS端传递包含PNG图像数据的字符串,然后使用Objective-C以某种方式将其保存到照片库。
答案 0 :(得分: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将它们附加到片段网址即可。所以相反,你可能有
<a href="file://myGreatApp.com/saveImage*asdgo8asdgl35lkjasgd807ll12">Click Me to Save Image </a>
然后在你的Obj-C代码中,将片段拆分为char'*'。使用前半部分作为选择器,后半部分作为参数。