iOS13.0之后
13.0之前
1、Appledate touchBegin方法获取状态栏事件无效
2、添加一个带Tap手势的遮罩Window也无效
怎么能获取到状态栏的点击事件 让列表滚动到顶部
iOS13.0之后
13.0之前
1、Appledate touchBegin方法获取状态栏事件无效
2、添加一个带Tap手势的遮罩Window也无效
怎么能获取到状态栏的点击事件 让列表滚动到顶部
以下回答参考 皆我百晓生、券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。
在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之前的版本,你可能需要寻找其他的方法来实现相同的功能。