我正在尝试在我的iOS应用中覆盖“从屏幕顶部向下滑动”手势(打开通知中心的手势)。
据我所知,正确的方法是在视图控制器上重写preferredScreenEdgesDeferringSystemGestures()
方法,并使用UIScreenEdgePanGestureRecognizer
处理手势。
在我的情况下,默认系统手势已成功阻止(通知中心未打开,只有灰色指示器出现在屏幕顶部),但手势识别器未触发。这是视图控制器的代码:
class ViewController: UIViewController { override func preferredScreenEdgesDeferringSystemGestures() -> UIRectEdge { return .top } override func viewDidLoad() { super.viewDidLoad() let gestureRecognizer = UIScreenEdgePanGestureRecognizer(target: self, action: #selector(swipeFromTop)) gestureRecognizer.edges = .top view.addGestureRecognizer(gestureRecognizer) } @objc func swipeFromTop() { print("swipe from top") // not printed } }
我为“从屏幕底部向上滑动”手势尝试了相同的操作,并且按预期方式工作(未打开控制中心,并且触发了手势识别器。]
我正在运行iOS 11.4的iPhone 7上进行测试。
我正在尝试在我的iOS应用中覆盖“从屏幕顶部向下滑动”手势(打开通知中心的手势)。据我了解,正确的方法是...
您还需要通过将prefersStatusBarHidden
设置为返回prefersStatusBarHidden
并将true
设置为isNavigationBarHidden
,来隐藏状态栏和导航栏。