【问题标题】:How to prevent accident swipe in iOS game如何防止iOS游戏中的意外滑动
【发布时间】:2019-07-09 05:53:31
【问题描述】:

在 iPad 上测试 SpriteKit iOS 游戏(当前运行 iOS 12 测试版)期间,我们发现在屏幕上拖动可能会意外触发系统向上滑动手势(并转到主屏幕或多任务屏幕)。

有没有办法禁用系统滑动(或者可能需要滑动两次)以防止意外滑动?

【问题讨论】:

    标签: ios sprite-kit ios12


    【解决方案1】:

    你可以推迟手势

    //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
    }
    

    然后当您希望preferredScreenEdgesDeferringSystemGestures 触发时调用setNeedsUpdateOfScreenEdgesDeferringSystemGestures()

    有了这个,你现在可以先吸收手势,然后决定是否要传递它。

    参考资料:
    https://developer.apple.com/documentation/uikit/uiviewcontroller/2887507-setneedsupdateofscreenedgesdefer
    https://developer.apple.com/documentation/uikit/uiviewcontroller/2887512-preferredscreenedgesdeferringsys
    https://developer.apple.com/documentation/uikit/uirectedge

    教程:
    https://useyourloaf.com/blog/avoiding-conflicts-with-system-gestures-at-screen-edges/

    【讨论】:

      【解决方案2】:

      iOS 11

      已更改为实例属性...

      override var preferredScreenEdgesDeferringSystemGestures: UIRectEdge {
          return .bottom
      }
      

      或者,返回 .all 以推迟所有边。

      【讨论】:

        猜你喜欢
        • 2018-06-23
        • 1970-01-01
        • 1970-01-01
        • 2012-03-16
        • 1970-01-01
        • 1970-01-01
        • 2012-10-17
        • 1970-01-01
        • 2022-10-15
        相关资源
        最近更新 更多