在我的应用中,我使用UILongPressgestureRecognizer将子视图添加到UIGestureRecognizerStateBegan
上的视图,并在手势结束时删除此视图。
我的问题是,当应用程序在结束此手势之前进入后台(通过单击主页按钮或电源按钮来锁定屏幕)时,我添加的子视图将在用户恢复应用程序(返回前景)时仍然存在。
请建议我处理这个问题。
我知道- (void)applicationDidEnterBackground:(UIApplication *)application
中的AppDelegate
代理,但我不知道如何使用此代理来解决我的问题,因为此功能存在多个UIViewController
。
答案 0 :(得分:2)
您可以订阅UIApplicationWillResignActiveNotification,以便在应用即将进入后台时收到通知。每个UIViewController
都可以自行订阅通知。
然后您可以通过执行以下操作取消手势:
recognizer.enabled = NO
recognizer.enabled = YES
修改强>
As user1963877 suggested你还应该检查一个应用程序进入后台是否已经导致手势识别器进入取消状态。您只需要在手势处理程序中检查,然后删除子视图。
答案 1 :(得分:1)
您必须存储对呈现子视图的UIViewController
的引用。当您的应用转到applicationDidEnterBackground
时,您可以在引用的UIViewController上调用方法来删除子视图。
类似的东西:
[AppDelegate.referencedViewController removeSubviewFromScreen];