Siri 遥控器。方向箭头
Posted
技术标签:
【中文标题】Siri 遥控器。方向箭头【英文标题】:Siri Remote. Directional Arrows 【发布时间】:2015-12-04 14:45:43 【问题描述】:我在 tvOS 上的 Apple 默认 AVPlayerViewController 中发现了一种行为。如果您调用时间线,您可以在其中快退或快进视频,然后如果您将手指放在触摸板的右侧,请不要使用 SiriRemote,“10”标签会出现在当前播放时间旁边
如果您在没有按下遥控器的情况下移开手指,“10”标签就会消失。
触摸遥控器左侧也一样,只是当前播放时间左侧出现“10”标签。
问题是,我怎样才能收到这个事件的回调?用户将手指放在遥控器一侧的事件。
UPD
允许PressTypes=UIPressTypeRightArrow 的UITapGestureRecognizer 将在用户从触摸表面释放手指后生成事件。我对一旦用户触摸表面边缘(并且可能让手指静止)就会生成的事件感兴趣
【问题讨论】:
这些将是Positional Taps。 @DanielStorm,这很接近,但不完全是我想要的。带有 allowedPressTypes=UIPressTypeRightArrow 的 UITapGestureRecognizer 将在用户从触摸表面释放手指后生成事件。我对一旦用户触摸表面边缘(并且可能让手指静止)就会生成的事件感兴趣 【参考方案1】:经过几天的搜索,我得出结论 UIKit 没有报告此类事件。但是可以使用GameController
框架来拦截类似的事件。
Siri 遥控器表示为GCMicroGamepad
。它有财产
BOOL reportsAbsoluteDpadValues
应设置为 YES
。每次用户触摸表面时GCMicroGamepad
都会更新dpad
属性的值。 dpad
属性用float x,y
值表示,每个值在[-1,1]
范围内变化。这些值代表 Carthesian 坐标系,其中(0,0)
是触摸表面的中心,(-1,-1)
是遥控器“菜单”按钮附近的左下角,(1,1)
是右上角。
综上所述,我们可以使用以下代码来捕获事件:
@import GameController;
[[NSNotificationCenter defaultCenter] addObserverForName:GCControllerDidConnectNotification
object:nil
queue:[NSOperationQueue mainQueue]
usingBlock:^(NSNotification * _Nonnull note)
self.controller = note.object;
self.controller.microGamepad.reportsAbsoluteDpadValues = YES;
self.controller.microGamepad.dpad.valueChangedHandler =
^(GCControllerDirectionPad *dpad, float xValue, float yValue)
if(xValue > 0.9)
////user currently has finger near right side of remote
if(xValue < -0.9)
////user currently has finger near left side of remote
if(xValue == 0 && yValue == 0)
////user released finger from touch surface
;
];
希望对某人有所帮助。
【讨论】:
它肯定会帮助某人:我 :) 我正在尝试做同样的事情。一定要试试这个!以上是关于Siri 遥控器。方向箭头的主要内容,如果未能解决你的问题,请参考以下文章
检测 Siri Remote 上的音量和 Home 键按下情况