1

Cordova 3.1.0 (Cleaver コンポーネントと呼ばれる) を超える部分を使用して、ネイティブ iOS に基づくハイブリッド アプリケーションを構築しています。アプリはサンプルの index.html で動作しており、「DEVICE IS READY」というメッセージが表示されます (正常に動作していることを意味すると思います)。ここでの問題は、ネイティブ コンポーネントと Phonegap コンポーネントを通信するためのカスタム プラグインを追加する方法です。

私はいくつかのチュートリアルに従いました:

http://moduscreate.com/building-a-custom-phonegap-plugin-for-ios/ http://devgirl.org/2013/09/17/how-to-write-a-phonegap-3-0- plugin-for-android/ (これは Android 用です)

ベース/正規のコルドバに「接続」プラグインをインストールし、構造と.mと.hをプロジェクトにコピーして、独自のconfig.xml部分を追加しようとしましたが、うまくいきませんでした。

調べるための別のリソースを知っている人はいますか、または他の誰かが同じ状況にありましたか?

ありがとう!

編集:

新しく作成した Cordova プロジェクトでカスタム プラグインをテストしましたが、魅力的に動作します。

編集#2:

Phonegap Cleaver クラスでデバッグを行い、ほとんどが CDVViewController で、UIWebView デリゲート メソッドが呼び出されていないことに気付きました。

- (void)webViewDidStartLoad:(UIWebView*)theWebView
- (void)webViewDidFinishLoad:(UIWebView*)theWebView
- (void)webView:(UIWebView*)theWebView didFailLoadWithError:(NSError*)error
- (BOOL)webView:(UIWebView*)theWebView shouldStartLoadWithRequest:(NSURLRequest*)request navigationType:(UIWebViewNavigationType)navigationType

デリゲートが呼び出されるように再署名する方法はありますか?

4

1 に答える 1

2

You've probably already figured out the answer to your question about the UIWebView Delegate Methods not being called, but I wanted to provide an answer for anyone else who may stumble onto this page (I came across this post several times while trying to figure it out).

I assume your project uses ARC as mine does and that is where the problem lies. If you follow the instructions at: http://cordova.apache.org/docs/en/3.3.0/guide_platforms_ios_webview.md.html#iOS%20WebViews_using_cdvviewcontroller

It tells you to "Instantiate a new CDVViewController and retain it somewhere, e.g., to a class property", but in the example they provide, they don't retain the variable.

Instead make sure you assign the variable to a property:

@interface ViewController ()

@property (strong, nonatomic) CDVViewController *cdvViewController;

@end

@implementation ViewController

-(void)viewDidLoad
{
    [super viewDidLoad];

    self.cdvViewController = [CDVViewController new];
    [self.cdvViewController.view setFrame:self.view.frame];
    [self.view addSubview:self.cdvViewController.view];
}

And now those delegate methods will be called. Hope this helps someone else.

于 2013-12-31T13:29:38.397 に答える