App界面防止呼出控制中心、通知中心方法

場景

一些頁面中有手勢交互,難免存在這些手勢和系統手勢重疊的情況。例如,頁面中有一個從下向上滑的手勢,當在屏幕邊緣觸發時,則會呼出控制中心而不是響應頁面中的手勢。

方法

主要需要在控制器中實現兩個方法。

第一個是- (BOOL)prefersStatusBarHidden,當返回YES時,呼出控制/通知中心的手勢觸發時,不會馬上彈出控制/通知中心界面,而是在屏幕中出現一個灰色箭頭,用戶需要再次拖拽箭頭才會出現對應的控制界面。

Jietu20180118-104745.jpg

然而,如果只實現這個方法,手勢觸發時,頁面依然沒有響應。區別只是直接出現控制中心界面,還是需要額外的一個拖拽。所以就需要實現另一個方法。

第二個方法- (UIRectEdge)preferredScreenEdgesDeferringSystemGestures API_AVAILABLE(ios(11.0)),控制屏幕的四個邊緣,哪個邊緣的手勢觸發時,會延遲系統手勢。默認為UIRectEdgeNone, 即系統手勢優先。

- (UIRectEdge)preferredScreenEdgesDeferringSystemGestures {
    return UIRectEdgeAll;
}

實現后,對應的屏幕邊緣的手勢觸發,會優先相應App頁面的手勢,然后出現系統灰色箭頭。

系統頁面

當去Apple Store診斷電池時,會打開設置-隱私-分析-開始診斷apple,此時出現的診斷頁面,完全無法呼出控制中心、通知中心(上劃或下滑時,連灰色箭頭都不會出現),當在診斷中時,甚至Home鍵的點擊都會被攔截,用戶按Home鍵均會提示是否停止診斷,因此這個頁面中也無法進行截圖。

IMG_2377.jpg

參考: Is it possible to disable Control Center in iOS 7 programmatically and if not, what are alternatives?

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容