我正在尝试在我的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
,来隐藏状态栏和导航栏。