【发布时间】:2015-09-10 13:15:33
【问题描述】:
我已关注此tutorial,一切正常。我遇到的唯一问题是我不知道如何检测何时按下按钮?
提前致谢
【问题讨论】:
-
你读过documentation吗?
-
是的@DanielStorm,我现在有一个
pressesEnded函数,它永远不会因为某些原因而被调用
我已关注此tutorial,一切正常。我遇到的唯一问题是我不知道如何检测何时按下按钮?
提前致谢
【问题讨论】:
pressesEnded 函数,它永远不会因为某些原因而被调用
本教程的作者,向基于 TVML 的应用程序添加交互性的方法是在相关 DOM 元素上使用 addEventListener。您可以通过在创建过程中保持对 DOM 元素的引用,或者使用 getElementById 或其他类似的 JavaScript DOM 技术来查找 DOM 元素。另外,我应该提到我已经在提到的教程中添加了一个“第 2 部分”,其中包括这个作为它的主要重点。
这是一个示例,说明您如何在 JS 中执行此操作,假设 myDOMElement 是一个将您的按钮作为 DOM 元素引用的变量。
myDOMElement.addEventListener("select", function() { alert("CLICK!") }, false);
当然,我有更多关于教程的信息,所以也欢迎check that out。
【讨论】:
play添加一个事件监听器来检测播放/暂停按钮被按下。
按钮按下类似于 UITouch 事件。查看 UIResponder 标头中的 UIPresEvent 回调。 UIViewControllers 是响应者链的一部分,所以你可以像这样在你的视图控制器中添加回调:
- (void)pressesEnded:(NSSet<UIPress *> *)presses withEvent:(nullable UIPressesEvent *)event {
UIPress *anyPress = [presses anyObject];
// handle press event
}
【讨论】:
override func pressesBegan(presses: Set<UIPress>, withEvent event: UIPressesEvent?) { let press = UIPress() abort() }
let playPauseRecognizer = UITapGestureRecognizer(target: self, action: "playPauseRecognizer:")
playPauseRecognizer.allowedPressTypes = [NSNumber(integer:UIPressType.PlayPause.rawValue)]
view.addGestureRecognizer(playPauseRecognizer)
【讨论】:
您不应该在 tvOS 上使用“UIControlEvents.TouchUpInside”,因为这不会达到您的预期:您可能想改用“UIControlEvents.PrimaryActionTriggered”。
TouchUpInside 由实际触摸触发,这并不是您真正想要的:如果您希望按下遥控器上的 Select 按钮来触发您的按钮,您应该使用 PrimaryActionTriggered。
【讨论】:
根据Apple DocsApple Docs,您可以将操作添加到与 iOS 相同的 UIButton
UIButton 类的一个实例实现了一个触摸按钮 屏幕。按钮拦截触摸事件并发送操作消息 点击时指向目标对象。设定目标的方法和方法 动作继承自 UIControl。这个类提供了方法 设置按钮的标题、图像和其他外观属性。 通过使用这些访问器,您可以为 每个按钮的状态。
【讨论】:
Swift 3 版本的@jess-bowers 代码:
override func pressesEnded(_ presses: Set<UIPress>, with event: UIPressesEvent?) {
let anyPress: UIPress? = presses.first
}
【讨论】: