tvOS - playPause 手势不起作用

Posted

技术标签:

【中文标题】tvOS - playPause 手势不起作用【英文标题】:tvOS - playPause Gesture not working 【发布时间】:2017-10-17 14:06:06 【问题描述】:

PlayPause 按钮​​没有响应。 这是我放在viewDidLoad 方法中的代码:

playPauseTapGestureRegocnizer = UITapGestureRecognizer(target: self, action: #selector(playPauseTapped))
playPauseTapGestureRegocnizer.allowedPressTypes = [NSNumber(value: UIPressType.playPause.rawValue)]
view.addGestureRecognizer(playPauseTapGestureRegocnizer)

我尝试将它放在多种方法中,但它不起作用。 奇怪的是,当我将playPause 更改为menu 时,它与菜单按钮完美配合。

我错过了什么吗?

【问题讨论】:

使用您的代码,它对我有用。当我从 Apple TV 遥控器点击 playPause 按钮​​时,会调用 playPauseTapped() 方法。仅供参考,我使用的是 Xcode 9 和 Apple TV 4K。 它对我不起作用。如何找出手势没有响应的原因?以及为什么菜单按钮有效而不是播放暂停按钮? 您在下面尝试过我的解决方案吗? @AymenHARRATH 【参考方案1】:

斯威夫特 4

PlayPause 手势无法在真实设备上使用。 另一种解决方案是听UIPressesEvent

override func pressesEnded(_ presses: Set<UIPress>, with event: UIPressesEvent?)

    for press in presses
    
        if press.type == UIPress.PressType.playPause
        
            // handle play pause action
            break
        
        else
        
            super.pressesEnded(presses, with: event)
        
    

【讨论】:

@RussellHarrower 在viewDidLoad 中监听pressesEnded 并将这个函数放在视图控制器上。 问题是 tvOS 的 xcode SwiftUI 没有给我 appDelegate。所以不知道我应该把它放在哪里。没有全局 - viewDidLoad 所以我必须把它放在非常明显的位置。

以上是关于tvOS - playPause 手势不起作用的主要内容,如果未能解决你的问题,请参考以下文章

setSemanticContentAttribute:在 tvOS 10 中不起作用

NavigationLink 内的 tvOS 按钮不起作用

TapGesture 在 Xcode 11.0 Beta 中不起作用

如果视图注册平移手势,则捏合手势不起作用

点击手势不起作用

在 ListView 中点击手势手势识别器不起作用