当状态栏设置为隐藏时,检测点击状态栏

时间:2014-07-14 15:20:28

标签: ios uiscrollview scroll statusbar

目前我的状态栏设置为隐藏,但我想让scrollsToTop方法正常工作。是否有一种解决方法可以隐藏状态栏并检测它何时被点击? 谢谢

2 个答案:

答案 0 :(得分:1)

如果隐藏状态栏,设置为scrollsToTopYES 内置解决方案将无效

  

滚动到顶部的手势是点击状态栏。当一个用户   做出这个手势,系统会询问离你最近的滚动视图   状态栏滚动到顶部。

您必须在视图中添加UITapGestureRecognizer并自行检测。 您有两种选择:

  • 添加状态栏大小的不可见视图,并为其添加手势识别器。
  • 将其添加到主视图中,检查点击是否出现在通常状态栏的矩形中。

    - (void)handleGesture:(UIGestureRecognizer *)gestureRecognizer 
    {
        CGPoint p = [gestureRecognizer locationInView:self.view];
    
        if (CGRectContainsPoint(statusBarRect, p)) 
        {
            NSLog(@"Got a tap in the status bar area");
    
            // Scroll to the top.
            [self.scrollView setContentOffset:CGPointZero animated:YES];
        } 
    }
    

答案 1 :(得分:0)

您可以考虑将状态栏与背景混合(即在白色背景上使用UIStatusBarStyleLightContent或在深色背景上使用UIStatusBarStyleDefault。无法绕过电池电量不足的内容,但是)。

否则,我建议您创建自己的UIView,其alpha值为零,UITapGestureRecognizer代替状态栏,并在您选择时实现自己的滚动版本一个tapGesture。