1

基本的に、同じコール ビュー コントローラー _vcCall をプッシュする次の 2 つのメソッドがあります。pushViewController は on_calling メソッドでは正常に動作しますが、on_incoming_call では動作しません。self.navigationController が null ではなく、_vcCall も null ではないことは確かです。両方のメソッドで navigationController と _vcCall の両方を出力しましたが、それらはすべて同じアドレスを持っています。on_incoming_call で新しいビューコントローラーを作成しようとしましたが、まだ機能していません。

画面にはボタンが1つしかなく、クリックするとコールビューコントローラーにプッシュされます。on_calling メソッドがトリガーされると、_vcCall に正常にプッシュされますが、on_incoming_call がトリガーされると、Call ボタンをクリックするのをブロックするだけです。現在のView Controllerにプッシュされている透明なページがあるようです。

ここに画像の説明を入力

誰か助けてくれませんか?

- (void)viewDidLoad {
   _vcCall = [[CallViewController alloc] init];
}

- (void) sipConnection: (SIPConnection *) connection on_calling: (NSDictionary *) userInfo     {
   NSLog(@"on_calling: navi: %@", self.navigationController);
   [self.navigationController pushViewController:_vcCall animated:YES];
}

- (void)sipConnection:(SIPConnection *)connection on_incoming_call:(NSDictionary *)userInfo {
   NSLog(@"on_incoming_call: navi: %@", self.navigationController);
   [self.navigationController pushViewController:_vcCall animated:YES];
}

これは、on_calling が最初にトリガーされたときのコンソールの出力です。

on_calling: navi: <navViewController: 0x77779d0>
on_incoming_call: navi: <navViewController: 0x77779d0>

次の部分は、デリゲート メソッドが呼び出される場所です。

- (void) processCallMediaState: (NSDictionary *) userInfo {
   int state = [[userInfo objectForKey: kState] intValue];
   switch(state) {
      case PJSIP_INV_STATE_CALLING: { // After INVITE is sent.
         [self.delegate sipConnection:self on_calling:userInfo];
         break;
      }
      case PJSIP_INV_STATE_INCOMING: {// After INVITE is received.
         [self.delegate sipConnection:self on_incoming_call:userInfo];
         break;
      }
      case PJSIP_INV_STATE_EARLY: {// After response with To tag.
         break;
      }
      case PJSIP_INV_STATE_CONNECTING:{ // After 2xx is sent/received.
         break;
      }
      case PJSIP_INV_STATE_CONFIRMED: { // After ACK is sent/received.
         [self.delegate sipConnection:self on_respond:userInfo];
         break;
      }
      case PJSIP_INV_STATE_DISCONNECTED: {
         [self.delegate sipConnection:self on_ending:userInfo];
         break;
      }
   }
}
4

1 に答える 1