如何收听Focus活动(Apple TV)



我们有一个Scaleform接口,因此不能使用UIButton、UITextField等内置类。

这就是我迄今为止所尝试的:

  1. 通过UISwipeGestureRecognizer处理滑动,但与Focus系统不同的是,当手指触摸触摸板区域时,它只会产生一个事件。

  2. 订阅GCMicroGamepad.dpad.ValueChangedHandlerGCMicroGamepad.reportsAbsoluteDpadValues为YES,因为出于游戏目的需要绝对值
    我以为我可以很容易地算出相对值。但事实证明,当我按下触摸板的一角时,会得到以下更新:
    (x = 1, y = 0) (x = 1, y = 1)
    而不是简单地接收
    (x = 1, y = 1)这意味着生成了两个valueChanged事件,而不是一个。

有没有办法订阅Focus引擎事件?

好吧,我是这样获得的:我有一个更新循环(显然)。在这个更新循环中,我查看CurTouchpadPositionPrevTouchpadPosition
CurTouchpadPosition在每次调用GCMicroGamepad.dpad.ValueChangedHandler时设置
更新完成后,PrevTouchpadPosition设置为CurTouchpadPosition

显然,如果调用按以下顺序进行,这可能会带来一些问题:
GCMicroGamepad.dpad.ValueChangedHandler(x=0,y=1)
更新()
GCMicroGamepad.dpad.ValueChangedHandler(x=1,y=1)

但事实并非如此。在主线程中的某个位置调用了ProbabalyGCMicroGamepad.dpad.ValueChangedHandler

相关内容

  • 没有找到相关文章

最新更新