将状态栏设置为隐藏后如何检测点击操作?

4

目前我的状态栏被设置为隐藏,但是我希望能够使用scrollsToTop方法。有没有一种方法可以保持状态栏隐藏并检测到它被点击了呢? 谢谢。

2个回答

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

滚动到顶部手势是点击状态栏。当用户执行此手势时,系统会要求最靠近状态栏的滚动视图滚动到顶部。

您必须向视图添加UITapGestureRecognizer并自行检测它。您有两个选项:

  • 添加一个与状态栏大小相同的不可见视图,并向其添加手势识别器。
  • 将其添加到主视图中,并检查点击是否发生在通常状态栏所在的矩形区域内。

    - (void)handleGesture:(UIGestureRecognizer *)gestureRecognizer 
    {
        CGPoint p = [gestureRecognizer locationInView:self.view];
    
        if (CGRectContainsPoint(statusBarRect, p)) 
        {
            NSLog(@"在状态栏区域收到了一个点击");
    
            // 滚动到顶部。
            [self.scrollView setContentOffset:CGPointZero animated:YES];
        } 
    }
    

0
你可以考虑将状态栏与你的背景混合(例如在白色背景上使用 UIStatusBarStyleLightContent 或在深色背景上使用 UIStatusBarStyleDefault)。但是无法避免低电量内容。
否则,我建议创建一个透明度为零的 UIView,并在状态栏位置放置一个 UITapGestureRecognizer,当你点击手势时实现自己版本的返回顶部功能。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接