【问题标题】:Detect tap on status bar while it is set to hidden在设置为隐藏时检测状态栏上的点击
【发布时间】:2014-07-14 15:20:27
【问题描述】:

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

【问题讨论】:

    标签: ios uiscrollview scroll statusbar


    【解决方案1】:

    如果状态栏被隐藏,内置解决方案scrollsToTop设置为YES将不起作用

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

    您必须在视图中添加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];
          } 
      }
      

    【讨论】:

      【解决方案2】:

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

      否则,我建议您创建自己的UIView,alpha 为零,UITapGestureRecognizer 代替状态栏,并实现您自己版本的滚动到顶部,当您拿起一个 tapGesture。

      【讨论】:

        猜你喜欢
        • 2014-12-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-05-12
        • 2017-08-03
        • 1970-01-01
        • 1970-01-01
        • 2023-03-10
        相关资源
        最近更新 更多