Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift tvos:UIViewController未接收触摸开始_Swift_Tvos_Touchesbegan_First Responder - Fatal编程技术网

Swift tvos:UIViewController未接收触摸开始

Swift tvos:UIViewController未接收触摸开始,swift,tvos,touchesbegan,first-responder,Swift,Tvos,Touchesbegan,First Responder,我正在尝试为苹果tv4(tvos)编写一个应用程序。当我的应用程序启动时,视图控制器确实会收到touchsbegind事件,这是它应该收到的 在不涉及太多细节的情况下,应用程序创建、移动和删除子视图以响应用户的交互 一段时间后,视图控制器不再接收touchesbreated(这是我试图调试的奇怪错误) 由于我认为问题与响应者链有关,我做了以下两个实验: 如果我让视图控制器覆盖并从canBecomeFirstResponder返回true,那么问题仍然会发生,但发生的频率要低得多 如果我不重写该函

我正在尝试为苹果tv4(tvos)编写一个应用程序。当我的应用程序启动时,视图控制器确实会收到
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按钮
    或其他启用聚焦引擎的元素,从而禁用常规触摸事件?