Swift tvos:UIViewController未接收触摸开始
我正在尝试为苹果tv4(tvos)编写一个应用程序。当我的应用程序启动时,视图控制器确实会收到Swift tvos:UIViewController未接收触摸开始,swift,tvos,touchesbegan,first-responder,Swift,Tvos,Touchesbegan,First Responder,我正在尝试为苹果tv4(tvos)编写一个应用程序。当我的应用程序启动时,视图控制器确实会收到touchsbegind事件,这是它应该收到的 在不涉及太多细节的情况下,应用程序创建、移动和删除子视图以响应用户的交互 一段时间后,视图控制器不再接收touchesbreated(这是我试图调试的奇怪错误) 由于我认为问题与响应者链有关,我做了以下两个实验: 如果我让视图控制器覆盖并从canBecomeFirstResponder返回true,那么问题仍然会发生,但发生的频率要低得多 如果我不重写该函
touchsbegind
事件,这是它应该收到的
在不涉及太多细节的情况下,应用程序创建、移动和删除子视图以响应用户的交互
一段时间后,视图控制器不再接收touchesbreated
(这是我试图调试的奇怪错误)
由于我认为问题与响应者链有关,我做了以下两个实验:
canBecomeFirstResponder
返回true
,那么问题仍然会发生,但发生的频率要低得多问题:什么可以阻止调用
touchesbreated
?是否与响应者的变更有关?如果是这样,请解释上面的第2条。您应该如何“触摸”非触摸屏电视上呈现的视图
你不是。。tvOS不像iOS那样工作,因为苹果电视不支持触摸屏输入设备,所以无法检测触摸
相反,您可以使用UIFocusEngine
处理与视图层次结构中显示的内容的交互
查看苹果开发者库中的“”,了解更多信息。我可以触摸Siri遥控器(或按模拟器中的alt键)。此外,我可以使用手势识别器来检测刷卡。在错误发生之前,一切正常。可能与焦点/或第一响应者有关。Siri Remote上的操作无法映射到
UIView
中的坐标。高级API,如UIControl
和UIgestureRecognitizer
已经更新,以支持这种跨平台(稍作调整),但是像UITouch
这样的低级API并不存在,因为它无法翻译。查看上面链接中的下一部分(检测手势和按钮按下),它解释了这一切。从技术上讲,您可以考虑使用按开始:
,按更改:
等,但它不会直接替代触摸屏的等效功能。我不关心绝对坐标。我想知道用户何时刷卡,以及刷卡的方向。PressesBegind总是被调用,没问题,但我也喜欢捕捉刷卡。你不必在意,UITouch会,因此它不会被调用。也许可以考虑改用uigesturecognizer
。这对回答没有帮助。事实上,对于常见的UI交互,焦点引擎很好。但是在视图控制器上使用触摸…
和按下…
功能来评估高级定制触摸处理的触摸事件是100%有效的。FWIW,我偶尔也会观察到同样的行为,它不会接收触摸事件,即使它会继续接收新闻事件。这感觉像是tvOS的错误。对不起。。我可能弄错了。。。重新阅读后,你是说它在使用一段时间后停止工作?也许您可以提供更多关于您正在做什么的信息(包括代码示例),以便我们更好地了解正在发生的事情。您是否可能添加了ui按钮
或其他启用聚焦引擎的元素,从而禁用常规触摸事件?