私はここで遅れているかもしれませんが、最初の 2 つの質問の答えは「はい」です。コードを表示し、他のビューをナビゲート/プッシュするピッカーを持つObjective Cメソッドを、Javascriptを持つWebから呼び出すことができます。UIWebViewDelegate を使用して、ネイティブ アプリでそれらを追跡するだけです。これが私がこれを行った方法の例です:
// Javascript ファイルで、Pickerview を呼び出したい、または別のネイティブ ビューをプッシュしたいメソッド内
var iframe = document.createElement("IFRAME");
iframe.setAttribute("src", "js-frame:myObjectiveCFunction";
document.documentElement.appendChild(iframe);
iframe.parentNode.removeChild(iframe);
iframe = null;
ネイティブの目的 - 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 にパラメータを送信することもできます。// -----------------------------------