【问题标题】:UIWebView in full screen hides status bar全屏UIWebView隐藏状态栏
【发布时间】:2012-11-20 10:51:04
【问题描述】:

我正在使用以下代码在 UIWebView 中打开视频。

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
    NSLog(@"Navigatin Type %d %@",navigationType, request);
    if (navigationType == 0) {
        self.navigationItem.leftBarButtonItem = backBarBtn;
        [self showVideoInWebView:[request.URL absoluteString]];
        return NO;
    }

    return YES;
}

-(void)showVideoInWebView:(NSString *)urlStr
{
    [mainWebView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:urlStr]]];
}

但是当我的 mainWebView 全屏打开时,它会隐藏我的状态栏。

我不想隐藏状态栏

那我怎样才能显示我的状态栏呢?

【问题讨论】:

  • 应用程序的其余部分显示状态栏,只有一个控制器隐藏它?
  • @samfisher:是的,完全正确。只有这个控制器隐藏状态栏。
  • 您需要检查此控制器中是否有任何 LOC 已明确将状态栏设置为隐藏 [[UIApplication sharedApplication] setStatusBarHidden:YES animated:YES]; 并在代码中将其设置为 setStatusBarHidden:NO

标签: iphone objective-c uiwebview uistatusbar


【解决方案1】:

您可以设置通知以使状态栏可见。 设置全屏进入和退出通知的通知,以便您可以根据需要显示和隐藏状态栏。

// For FullSCreen Entry 

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(videoFullScreen:) name:@"UIMoviePlayerControllerDidEnterFullscreenNotification" object:nil];

// For FullSCreen Exit
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(videoExitFullScreen:) name:@"UIMoviePlayerControllerDidExitFullscreenNotification" object:nil];


- (void)videoFullScreen:(id)sender
   {
     [[UIApplication sharedApplication] setStatusBarHidden:NO animated:NO];

   }

- (void)videoExitFullScreen:(id)sender
 {
  //Here do WHat You want
 }

我相信它会对你有所帮助。

【讨论】:

  • 看起来不错,但它使用了未记录的行为并且可能会在某些时候中断
  • @Daij-Djan 是的,你是对的。但我使用相同的代码避免了同样的问题。现在我的应用程序使用相同的代码在 AppStore 上......没有任何拒绝
  • 是的,我说:这是一种很酷且合理的方式,但在理论上是不安全的。只是迎来一个警告:D
【解决方案2】:

这是内置电影播放器​​ AFAIK 的行为,您无法更改它......也许可以使用替代 HTML5 控件。

【讨论】:

  • 感谢朋友的回复,但解决方案是什么?因为这个问题会影响我的其他视图控制器
  • 没有可可的方式 .. 不知道足够的 html 来告诉你更多或如果该事件有效 - 抱歉
  • 一个想法是阻止 webview 播放电影(你可以从 shouldStartLoading 返回 NO)然后在你自己的视图控制器中播放它
【解决方案3】:

当你的UIWebView 开始全屏时写下这一行..

试试这条线..

-(void)moviePlayerEvent:(NSNotification*)aNotification{

     [[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:NO];
     NSLog(@"%i", [UIApplication sharedApplication].statusBarHidden);

}

【讨论】:

  • 是的,我认为这里的问题是 webview 中的 vedioplayr,所以请参考 html5 进行视频播放
  • @iPhone 嘿,试试我编辑的答案,并检查这个链接。devx.com/wireless/Article/44642
【解决方案4】:

另一种方式:

[[NSNotificationCenter defaultCenter] addObserver:self                                             
selector:@selector(VideoFullScreenExit:) name:UIWindowDidBecomeHiddenNotification object:self.view.window];

- (void)VideoFullScreenExit:(id)sender {
    [[UIApplication sharedApplication] setStatusBarHidden:NO];
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-10-11
    • 2023-03-06
    • 1970-01-01
    • 2011-04-29
    相关资源
    最近更新 更多