CC_XF 2019-11-04 18:15 采纳率: 0%
浏览 621

iOS13.0 点击状态栏怎么能获取到其事件

iOS13.0之后

13.0之前

1、Appledate touchBegin方法获取状态栏事件无效
2、添加一个带Tap手势的遮罩Window也无效

怎么能获取到状态栏的点击事件 让列表滚动到顶部

  • 写回答

1条回答 默认 最新

  • 你知我知皆知 2024-07-29 20:18
    关注

    以下回答参考 皆我百晓生券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。

    在Objective-C中,你可以使用以下方法来监听状态栏的点击事件:

    - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
        if ([event isKindOfClass:[UITouch class]]) {
            UITouch *touch = [event touchesAny:touches];
            CGPoint point = [touch locationInView:self.view];
            
            // 获取状态栏的高度
            CGFloat statusBarHeight = self.statusBar.frame.size.height;
            
            // 如果点击的位置在状态栏之上,则滚动视图到顶部
            if (point.y >= statusBarHeight) {
                // 获取当前的视图高度和状态栏的高度
                CGRect viewFrame = self.view.bounds;
                CGRect statusFrame = self.statusBar.bounds;
                
                // 滚动视图到状态栏顶部
                viewFrame.origin.y = statusFrame.origin.y - viewFrame.size.height;
                self.view.frame = viewFrame;
            }
        }
    }
    

    这个方法会在触摸开始时检查触点是否位于状态栏之上。如果是在状态栏之上,那么它会将视图移动到状态栏顶部。

    请注意,这个方法是针对iOS 13及更高版本的。如果你正在使用iOS 13之前的版本,你可能需要寻找其他的方法来实现相同的功能。

    评论

报告相同问题?