我試圖將我的原生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