2014-10-07 25 views
2

的中間。在我的應用程序,我使用UILongPressgestureRecognizer添加一個子視圖到視圖上UIGestureRecognizerStateBegan當手勢結束消除了這一觀點。手柄應用正在進行的背景UILongPressgestureRecognizer

我的問題是,當應用程序在結束此手勢之前轉到背景(通過單擊主屏幕按鈕或電源按鈕鎖定屏幕)時,我添加的子視圖在用戶恢復應用程序時將仍然存在(回到前景)。

請建議我一些方法來處理這個問題。
我知道AppDelegate- (void)applicationDidEnterBackground:(UIApplication *)application委託,但我不知道如何使用這個委託來解決我的問題,因爲這個功能有多種UIViewController

+2

你爲UIGestureRecognizerStateCancelled狀態檢查識別? – Kegluneq 2014-10-07 12:35:38

回答

2

您可以訂閱UIApplicationWillResignActiveNotification當應用程序即將進入後臺得到通知。每個UIViewController都可以自行訂閱通知。

然後,你可以通過執行取消手勢:

recognizer.enabled = NO 
recognizer.enabled = YES 

編輯

As user1963877 suggested您也應該檢查應用程序會在後臺是否已經導致手勢識別進入取消狀態反正。你只需要檢查你的手勢處理程序,然後刪除你的子視圖。

+0

如果應用程序正在進行背景將手勢處理程序調用與取消狀態? – 2014-10-07 12:41:00

1

你必須將其存儲到UIViewController參考呈現子視圖。當你的應用去applicationDidEnterBackground,你叫你的引用的UIViewController的方法來刪除子視圖。
喜歡的東西:

[AppDelegate.referencedViewController removeSubviewFromScreen];