我正在Objective-C中开发一个iOS框架,我需要在执行框架时检测何时按下主页按钮。
为了更好地描述:在我的最终应用程序上,在我添加编译后的框架的地方,用户必须单击一个按钮,该按钮将调用我的框架。然后,框架打开相机,尝试识别一些对象并返回结果。
我的问题是:如果用户在相机运行时点击主页按钮,应用程序进入后台,我需要我的框架来结束这个过程并返回零。
我已经尝试过使用以下方法:
- (void) applicationWillResignActive:(UIApplication *) application {}
- (void) applicationDidEnterBackground:(UIApplication *) application {}
- (void) applicationWillTerminate:(UIApplication *) application {}
- (void) applicationWillResign {}
- (void) viewDidDisappear:(BOOL) animated {}
当我按下主页按钮时,它们都没有触发。
是否有其他检测方法?
您无法检测到主页按钮被按下,但您可以检测到它的结果。
如果您的申请被发送到后台,您将获得UIApplicationWillResignActiveNotification
。您可以使用NSNotificationCenter
:收听
- (void)initFramework {
[NSNotificationCenter.defaultCenter addObserver:self
selector:@selector(willResignActive)
name:UIApplicationWillResignActiveNotification
object:nil];
}
- (void)willResignActive {
// do what you need to do,
// e.g. cancel a running operation,
// call a callbackHandler with nil, etc.
}
- (void)dealloc {
// maybe also provide an explicit mechanism
// by which the user of the framework can do this
[NSNotificationCenter.defaultCenter removeObserver:self];
}