如何使用tvOS接收触摸?

use*_*883 8 objective-c tvos

如何使用模拟器使用tvOS接收触摸?我们需要知道触摸位置.UIPress - 没有它!

-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(nullable UIEvent *)event {
    // Never called
}

-(void)pressesEnded:(NSSet<UIPress *> *)presses withEvent:(nullable UIPressesEvent *)event {
    // Works fine!
}
Run Code Online (Sandbox Code Playgroud)

lem*_*nar 10

按钮与物理按钮相关,如菜单按钮.当您开始按住这样一个按钮时,按下按钮,当您停止按住按钮时按下它.没有与印刷机相关的任何与屏幕相关的位置.

tvOS中的触摸类似于iOS中的触摸,但有一个重要的区别:它们是"间接"触摸,即手指的位置和屏幕上的位置之间没有物理关系.

当触摸开始时,它将被传递到聚焦视图,并且无论手指在触摸表面上的绝对位置如何,都将认为触摸已经在该视图的中心开始.触摸移动时,其屏幕相对位置将相应更新.

我不知道任何API可以让你确定手指在触摸表面上的绝对位置.

在您的情况下,使您的响应者成为焦点视图应该使其接收触摸事件.


Mat*_*erg 3

我认为应该是PressesBegan而不是touchedBegan。

(void)pressesBegan:(NSSet<UITouch *> *)touches withEvent:(nullable UIEvent *)event
Run Code Online (Sandbox Code Playgroud)