場景
一些頁面中有手勢交互,難免存在這些手勢和系統手勢重疊的情況。例如,頁面中有一個從下向上滑的手勢,當在屏幕邊緣觸發時,則會呼出控制中心而不是響應頁面中的手勢。
方法
主要需要在控制器中實現兩個方法。
第一個是- (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