Ich habe versucht Cleaver zu verwenden, das ist PhoneGap/Cordova als Komponente einer bestehenden iOS-Anwendung. Ich folgte this step by step guide zweimal, ohne Erfolg.Cleaver (PhoneGap/Cordova als Komponente) funktioniert nicht unter iOS
Meine Anwendung kann leicht eine Webansicht instanziieren, und ich kann Inhalt mit der Methode stringbyevaluatingjavascriptfromstring
übergeben, aber sobald ich versuche, auf PhoneGap API (navigator.compass, navigator.network, ...
) zuzugreifen, scheint nichts zu funktionieren. console.log(navigator)
zeigt keine Anzeichen von Cordova-Objekten (console.log
gibt nichts aus Xcode ist, verwende ich http://debug.phonegap.com/). Das Ereignis deviceready
wird ebenfalls nicht ausgelöst.
In meiner HTML-Datei, ich schließe PhoneGap js Datei cordova-1.7.0rc1.js
, die ich von einem anderen Projekt kopiert (seit /www
Ordner fehlt, wenn Sie PhoneGap als Komponente verwenden).
Meine ViewController.h
importiert <Cordova/CDVViewController.h>
. Hier mein ViewController.m
//
// ViewController.m
// CordovaComponent
//
#import "ViewController.h"
@interface ViewController(){
CDVViewController *cdvViewController ;
}
@end
@implementation ViewController
- (void)pushPhoneGap:(id)sender {
cdvViewController = [[CDVViewController alloc] init];
cdvViewController.wwwFolderName = @"www";
cdvViewController.startPage = @"index.html";
cdvViewController.view.frame = self.view.bounds;
cdvViewController.webView.delegate = self;
[self.navigationController pushViewController:cdvViewController animated:YES];
}
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
UIButton * button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[button setTitle:@"Push PhoneGap view" forState:UIControlStateNormal];
[button addTarget:self action:@selector(pushPhoneGap:) forControlEvents:UIControlEventTouchUpInside];
button.frame = CGRectMake(60, 50, 200., 50.);
[self.view addSubview:button];
}
- (void)viewDidUnload
{
[super viewDidUnload];
// Release any retained subviews of the main view.
}
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);
}
- (void)webViewDidFinishLoad:(UIWebView *)webView {
NSString *jsReturn = [cdvViewController.webView stringByEvaluatingJavaScriptFromString:@"setArray([1, 1, 2, 3, 5, 8, 13, 21, 34, 1]);"];
NSLog(jsReturn);
}
@end
Haben Sie eine Vorstellung davon, was passiert? Jede Hilfe würde sehr geschätzt werden!
Hallo, dann, wenn diese Zeile nicht hinzugefügt wird, kann die Funktion webViewDidFinishLoad nicht ausgelöst werden? – red23jordan