在uiwebview中播放youtube视频.如何处理"完成"按钮?

jon*_*ypz 10 youtube iphone video uiwebview ios

我有一个播放youtube视频的uiwebview.如何处理完成按钮操作?现在,当我点击完成按钮时,它会更改回我的应用程序主菜单(而不是应该关闭的菜单),它就会冻结.有人可以帮我吗?

Ps:uiwebview所在的菜单,以前是以模态方式呈现的.

lam*_*bmj 8

YouTube插件播放器本身就是一个模态视图控制器.presentingViewController当按下完成按钮时它返回到它.它presentingViewController不是你的模态视图控制器,而是调用的viewController [presentModalViewController:animated:]来呈现你的模态视图控制器.由于原始模态视图控制器仍处于活动状态,因此应用程序表现不佳.

要解决这个问题,

1)跟踪模态视图控制器是否已被呈现但未被解除.

2)在viewDidAppear呈现视图控制器的方法中,如果呈现模态视图控制器而不是被解除,则解除并再次呈现它.

例如,在呈现模态Web视图控制器的控制器中:

 - (void) presentModalWebViewController:(BOOL) animated {
      // Create webViewController here.
      [self presentModalViewController:webViewController animated:animated];
      self.modalWebViewPresented = YES;
  }

  - (void) dismissModalWebViewController:(BOOL) animated {
      self.modalWebViewPresented = NO;
      [self dismissModalViewControllerAnimated:animated];
  }

  - (void) viewDidAppear:(BOOL)animated {
      [super viewDidAppear:animated];
      if (self.modalWebViewPresented) {
           // Note: iOS thinks the previous modal view controller is displayed.
           // It must be dismissed first before a new one can be displayed.  
           // No animation is needed as the YouTube plugin already provides some.
           [self dismissModalWebViewController:NO];
           [self presentModalWebViewController:NO];
      }
  }
Run Code Online (Sandbox Code Playgroud)

  • 在这种情况下,UIWebView以模态方式呈现,并且呈现在其上的You Tube插件也以模态方式呈现.所以我们有一个模态视图控制器呈现模态视图控制器.UIKit期望只有一个模态视图控制器被呈现,当顶部被解雇时,它下面的控制器也被解雇.当发生这种情况时,使用viewDidAppear调用基本视图控制器:并让我们有机会再次表示我们的模态视图控制器.这是一个错误吗?也许,但可能是苹果公司做出的设计决定,我们必须努力解决. (2认同)