我试图将我的原生iOS应用程序转换为使用HTML 5的混合应用程序。 完成研究后,我以结束了jQuery mobile + phoneGap。HTML 5 + iOS - 创建混合应用程序
我的问题是
- 是否有可能一个 视图中混合HTML 5和iOS的原生功能?例如,我可以使用html文本字段获取值,并使用 它使用iOS拾取器进行一些转换。
- 是否可以从html页面导航到本地xib?
- 最后是否有更好的解决方案来创建混合应用程序?
在此先感谢
我试图将我的原生iOS应用程序转换为使用HTML 5的混合应用程序。 完成研究后,我以结束了jQuery mobile + phoneGap。HTML 5 + iOS - 创建混合应用程序
我的问题是
在此先感谢
是的,你可以在一台 '视图' 中混用机iOS功能。如果您想将本机iOS选取器插入网络视图,那不太可能。正如nhahtdh提到的那样,您添加的任何本机iOS视图都将放置在HTML5 UIWebView的顶部。要执行这样的任务,您需要通过Javascript掌握通信。有关如何轻松在ObjC和Javascript之间进行通信以在native和HTML之间来回传递值的技术,请参阅框架https://github.com/diy/conduit。
可以从HTML页面(例如点击链接时)执行导航,设置您的iOS应用程序以监视特定的URL请求并根据它们执行某些操作。为此我使用了NSURLCache。因此,如果您希望HTML中的链接触发加载xib文件,您可以通过NSURLCache监视该URL,并在看到它时加载xib。 This link帮我掌握了这个技巧。
我的理解是,所有的混合iOS + HTML框架都使用这种通用技术来建立类似REST的URL请求,这些请求可以由类似NSURLCache的系统解析出来,并触发基于这些事件的本地事件网址。虽然使用现有框架可能会节省一些时间,但实现更简单的功能并不难。但是,大框架可能会帮助您更高级地缓存HTML资源。
对于2),您还可以扩展UIWebView的委托功能,并定义您自己的协议以表示xib的负载(与Cordova在内部的负载相同)。 – nhahtdh
我可以使用childBrowser插件将xib加载到应用程序中吗? –
可能是我迟到了这里,但前两个问题的答案是YES 你能。您可以调用Objective C方法,该方法具有Picker显示代码并导航/推送其他视图,从您的网站使用Javascript。你只需要使用UIWebViewDelegate在你的本地应用中追踪它们。这里的例子,我是如何做到这一点:
//在你的JavaScript文件,里面的方法:在你想要调用Pickerview或要推另一本地视图
var iframe = document.createElement("IFRAME");
iframe.setAttribute("src", "js-frame:myObjectiveCFunction";
document.documentElement.appendChild(iframe);
iframe.parentNode.removeChild(iframe);
iframe = null;
您的母语的Objective - C文件:包括< < UIWebViewDelegate >>
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request
navigationType:(UIWebViewNavigationType)navigationType {
if ([[[request URL] absoluteString] hasPrefix:@"js-frame:"]) {
// Extract the selector name from the URL
NSArray *components = [requestString componentsSeparatedByString:@":"];
NSString *functionName = [components objectAtIndex:1];
// Call the given selector
[self performSelector:NSSelectorFromString(functionName)];
// Cancel the location change
return NO;
}
// Accept this location change
return YES;
}
- (void)myObjectiveCFunction {
// Do whatever you want!
// show Native picker view
// Push another native View
}
以同样的方式,您甚至可以将参数从HTML页面发送到Objective c。 // -----------------------------------
嗨,我是iOS新手。作为新手,我已经完成了创建混合应用程序的任务。我一般在Android工作。对于Hybrid Android,我将HTML文件,JS和CSS文件放入文件夹并从容器中调用html文件。在这种情况下,在iOS中,你能告诉我在哪里可以放置HTML文件并给我打电话。如果你有任何演示,你可以告诉我吗? – Debopam
1 - 可能的,但iOS功能将在网络视图顶部2 - 可能的,但你必须确保网络视图不卸载 – nhahtdh
@nhahtdh感谢您的答复。 你可以建议我一些关于上述主题的教程。 –
检查是否存在可以使用或修改的插件。否则,我认为你必须编写自己的插件。 – nhahtdh