在 iPad 上测试我们的 SpriteKit iOS 游戏(当前运行 iOS 12 测试版)时,我们发现在屏幕上拖动可能会意外触发系统向上滑动手势(并转到主屏幕或多任务屏幕)。
有没有办法禁用系统滑动(或者可能需要滑动两次)以防止意外滑动?
在 iPad 上测试我们的 SpriteKit iOS 游戏(当前运行 iOS 12 测试版)时,我们发现在屏幕上拖动可能会意外触发系统向上滑动手势(并转到主屏幕或多任务屏幕)。
有没有办法禁用系统滑动(或者可能需要滑动两次)以防止意外滑动?
你可以推迟手势
//Tell the system you prefer deferring
override func preferredScreenEdgesDeferringSystemGestures() -> UIRectEdge {
return [.bottom] //Whatever side you want to defer, see UIRectEdge() https://developer.apple.com/documentation/uikit/uirectedge
}
然后setNeedsUpdateOfScreenEdgesDeferringSystemGestures()
在您想要preferredScreenEdgesDeferringSystemGestures
触发时调用。
有了这个,您现在可以先吸收手势并决定是否要传递它。
参考资料:
https ://developer.apple.com/documentation/uikit/uiviewcontroller/2887507-setneedsupdateofscreenedgesdefer
https://developer.apple.com/documentation/uikit/uiviewcontroller/2887512-preferredscreenedgesdeferringsys
https://developer.apple.com/文档/uikit/uirectedge
教程:
https ://useyourloaf.com/blog/avoiding-conflicts-with-system-gestures-at-screen-edges/
iOS 11
更改为实例属性...
override var preferredScreenEdgesDeferringSystemGestures: UIRectEdge {
return .bottom
}
或者,返回 .all 以推迟所有边。