场景
一些页面中有手势交互,难免存在这些手势和系统手势重叠的情况。例如,页面中有一个从下向上滑的手势,当在屏幕边缘触发时,则会呼出控制中心而不是响应页面中的手势。
方法
主要需要在控制器中实现两个方法。
第一个是- (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