1

私はそれを次のコードでサブクラスNSURLProtocol化して登録しました:didFinishLaunchingWithOptions

+ (void) registerProtocol 
{
   static BOOL registered = NO;

   if (!registered) 
   {
      [NSURLProtocol registerClass:[MyURLProtocol class]];
      registered = YES;
   }
}

アプリの最初UIWebViewの部分(メインウィンドウ内)でメソッドcanInitWithRequestがトリガーされ、カスタムコードを実行できます。

ただし、2つ目は、アプリのある時点でプッシュされる(モーダルで表示される)UIWebView内部にあります。UIViewControllercanInitWithRequest2番目に呼び出されUIWebViewないため、カスタムコードを実行できません。UIWebViewこれは、の両方のインスタンスが作成された後にプロトコルが登録されている場合にも当てはまります。

誰もが理由を知っていますか?

[編集]d'oh!私はちょうどそれが2番目のウェブビューにロードされたjavascriptの単なるエラーであることに気づきました:(今は両方のウェブビューで魅力のように機能します!

4

1 に答える 1

2

これがあなたの状況と解決策に関連しているかどうかはわかりませんが、記録のために投稿してください。多くの試行錯誤の末、NSURLProtocol のサブクラスによってインターセプトされる目的 c にメッセージを送信する ajax 呼び出しで、同じ URL を複数回送信することが予想される場合は、キャッシュを false に設定する必要があることを今日発見しました。そのようです:

$.ajax({
       url:"atavistcommand://" + name,
       data:JSON.stringify(data),
       type:"GET",
       processData:false,
       cache:false )};

cache = true の場合、目的 c は同じ URL で後続のリクエストを受け取ることはありません。

于 2012-11-02T18:57:44.850 に答える