我正在研究用Swift编写的iOS游戏.我试图找到一种方法来检测应用程序何时进入后台模式或因其他原因而中断,例如电话但无法找到任何内容.我该怎么做?
我正在使用Xcode 11并为iOS 13构建应用程序。在Xcode中创建的新项目中,缺少一些UIApplicationDelegate方法,因此我将它们重新添加到了应用程序委托文件中。“单视图应用程序”项目的新模板缺少这些方法。问题在于,除了之外,没有其他任何委托方法被调用-application:didFinishLaunchingWithOptions:。这是我的应用程序委托:
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
NSLog(@"application:didFinishLaunchingWithOptions:");
return YES;
}
- (void)applicationDidEnterBackground:(UIApplication *)application {
NSLog(@"applicationDidEnterBackground:");
}
- (void)applicationWillEnterForeground:(UIApplication *)application {
NSLog(@"applicationWillEnterForeground:");
}
#pragma mark - UISceneSession lifecycle
- (UISceneConfiguration *)application:(UIApplication *)application configurationForConnectingSceneSession:(UISceneSession *)connectingSceneSession options:(UISceneConnectionOptions *)options {
return [[UISceneConfiguration alloc] initWithName:@"Default Configuration" sessionRole:connectingSceneSession.role];
}
- (void)application:(UIApplication *)application didDiscardSceneSessions:(NSSet<UISceneSession *> *)sceneSessions {
}
@end
Run Code Online (Sandbox Code Playgroud) 我在SceneDelegate中定义了一个let属性。我希望某些ViewController能够在场景中访问它。
在UIKit中,我可以访问App Delegate属性,如下所示:
UIApplication.shared.delegate
Run Code Online (Sandbox Code Playgroud)
然后强制转换并指定属性名称...
是否有等效的方法可以从UIViewController的实例获取对视图控制器所在的SceneDelegate的引用?
我有一个touchesBegan方法AppDelegate。我用它来检测状态栏中的水龙头。我在那里待了很长时间,效果很好。在iOS 13 Beta发布之前...
自从使用iOS 13 touchesBegan以来,就不再停止调用它。我的应用程序中与手势相关的其他任何内容都没有更改,我的内容也没有任何AppDelegate更改。除了touchesBegan在iOS 12中而不是在iOS 13中被称为之外,我实际上没有什么可做的。
到目前为止没有运气,所以如果有人遇到相同或相似的问题,我在这里分享。
更新:1我发现了以下半相关的问题,这些问题导致我进入了iOS 13中苹果公司新的UISceneDelegate。这些问题touchesBegan都不能解释为什么不被调用。UISceneDelegate到目前为止,据我了解,我还没有找到为什么touchesBegan没有被调用的原因。
View Controller在iOS 12中响应应用程序委托通知,但在iOS 13中不响应。
如何检测状态栏中的触摸
iOS13:如何检测状态栏中的单击事件?