2014-08-27 50 views
3

如何在iOS控制中心打開時收到通知?當像QuizUp一樣打開控制中心時,iOS會收到通知

UIApplicationWillResignActiveNotification不夠好,因爲在通知中心打開,警報視圖出現以及其他可能的情況下也會發送此通知。

我確信這是不可能的,但是當用戶打開控制中心時,通知QuizUp應用程序,同時用戶處於遊戲玩法的中間以防止作弊遊戲。

感謝

回答

0

我測試了UIPanGestureRecognizer方法(有和沒有狀態欄可見的變化,如果小拉環,而不是自帶的控制中心構成)與留意applicationWillResignActive通知一起,我不能可靠地知道控制中心是否開放。如果平底鍋速度足夠慢,手勢識別器會首先觸發,但是滑動速度足夠快以觸發控制中心並繞過手勢識別器完全可以輕鬆觸發。

試圖檢查是否該應用從applicationWillResignActive去,然後applicationDidBecomeActive會知道,如果該應用程序進入和退出幾個州之一(控制中心,通知中心,接聽電話等),一個相當可靠的方法,但是告訴通知和控制中心之間的區別是不可能的。

TL; DR:我不認爲有一個可靠或準確的方法來判斷控制中心是否已打開,但QuizUp可能會做一些有趣的事情來僞造它,並且我可能會犯錯!

1

嘿,我做了很多反覆試驗,想出了一個很可靠的解決方案。它適用於所有方向,全屏(無狀態欄)和常規模式。 AAWindow是UIWindow的一個子類,你可以在GitHub上找到它。

我完成這個的方法是在UIWindow中重寫sendEvent,將TouchEvents與其他事件分離開來,並檢查是否在屏幕底部10%(這是可以打開控制中心的部分)中發生觸摸。如果有觸摸並在0.15秒(帶狀態欄)或3秒(無狀態欄)的時間範圍內調用applicationWillResignActive,則可以確信這是因爲打開了控制中心。然後NSNotification被解僱,你可以在應用程序的任何地方做出反應。

-1

控制中心打開時,循環未完成。只會調用方法 applicationDidResignActivity將被調用,但不會調用applicationDidEnterBackground。當應用程序最小化時,這兩種方法都會被調用。在這裏你可以區分。

相關問題