在我的appDelegate中,我重写touchesBegan
来检测何时单击状态栏:
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
[super touchesBegan:touches withEvent:event];
CGPoint location = [[[event allTouches] anyObject] locationInView:kWindow];
CGRect statusBarFrame = [UIApplication sharedApplication].statusBarFrame;
if (CGRectContainsPoint(statusBarFrame, location)) {
///do something
}
}
在iOS 13之前,此功能有效;在iOS 13上则没有。该方法从不执行。我怎样才能解决这个问题?
最佳答案
经过研究,我发现状态栏不再是iOS13上应用程序的一部分,而是系统UI(“跳板”)的一部分。您需要通过UIStatusBarManager访问它
因此,这不再起作用:
CGRect statusBarFrame = [UIApplication sharedApplication].statusBarFrame;
在iOS 13中,您需要像下面这样获取StatusBar框架:
UIStatusBarManager *manager = [UIApplication sharedApplication].keyWindow.windowScene.statusBarManager;
CGRect statusBarFrame = manager.statusBarFrame;
关于objective-c - iOS13:如何检测状态栏的单击事件?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57324218/