objective-c - 有没有办法检测用户点击触控板的右侧还是左侧?

标签 objective-c tvos

鉴于触摸总是从 0,0 开始,我找不到一种简单的方法来检测触摸板上触摸的具体位置。

最佳答案

检测实际点击的位置可能并不像看起来那么容易,甚至是不可能的。在这里区分点击和点击很重要。点击用于选择信息,点击用于确认,如 Apple 人机界面指南中所述。出于这个原因,苹果没有提供一种简单的方法来区分点击的位置,而点击则存在这种方法。在此之后,我的第一个建议是重新考虑界面,并按预期使用点击和点击。我确实认识到,在很多情况下,这是不可能的。

新 Remote 有一个触摸表面,其下方有一个物理按钮。

物理按钮单击和点击由 UIPress 类表示,并在设置 allowedPressTypes 时由手势识别器识别。物理按钮点击的按下类型是 UIPressTypeSelect

由于 UIPressTypeSelect 不区分实际触控板上的位置,并且它创建的事件返回实际屏幕上 UIWindow 中的位置,因此事件组合将是这里是完成任务所必需的。

使用以下方法检测按压开始的时间。然后查找类型的 UIPress

UIPressTypeUpArrow
UIPressTypeDownArrow
UIPressTypeLeftArrow
UIPressTypeRightArrow

这将表示触摸。其后应该是另一个 UIPressTypeSelect 类型的 UIPress 事件。这将表明用户单击了他们最初触摸的位置。

- (void)pressesBegan:(NSSet<UIPress *> *)presses withEvent:(UIPressesEvent *)event {  
    for (UIPress *item in presses) {
    }
}

这不是一个完美的解决方案,可能值得向 Apple 提交错误报告并请求该功能。

对 Remote 进行更精细控制的另一种选择是使用GCController,但这可能会使事情变得复杂,而且看起来它超出了这个问题的范围。

关于objective-c - 有没有办法检测用户点击触控板的右侧还是左侧?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34760217/

相关文章:

ios - UICollectionViewCell 中的 UILabel 布局怪异

uikit - 哪些 UIKit 现有类是可聚焦的?

ios - AVUrlAsset 和 WebVTT

objective-c - 修改 NSDateFormatter 样式?

iphone - 如何在 UILabel 中实现 pic 中的背景图像?

ios - 如何在 iOS 8 中比较两个 UIImage

ios - 未调用 CXProviderDelegate 方法

uiviewcontroller - tvOS - 在推 View Controller 转换期间捕捉 MENU 按钮按下

swift - tvOS 中的日期选择器

cocoa - 最小化后 TVOS 键盘丢失键盘外观