简单的 tvOS UIButton 不工作

Simple tvOS UIButton is not working

我正在尝试实现一个简单的 UIButton(tvOS 和 Swift),但没有触发 TouchDown 事件。 (也试过 TouchUpInside)。

我的ViewController.swift代码是:

import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        let button = UIButton(type: UIButtonType.System)
        button.frame = CGRectMake(100, 100, 400, 150)
        button.backgroundColor = UIColor.greenColor()
        button.setTitle("Test", forState: UIControlState.Normal)
        button.addTarget(self, action: "buttonAction:", forControlEvents: UIControlEvents.TouchDown)

        self.view.addSubview(button)

        self.view.userInteractionEnabled = true    
    }

    func buttonAction(sender:UIButton!){
        NSLog("Clicked")
    }
}

我需要做什么才能检测到按钮点击?

您不应该在 tvOS 上使用“.TouchDown”或“.TouchUpInside”,因为这并不符合您的预期:您可能想改用 "UIControlEvents.PrimaryActionTriggered"。

TouchUpInside 由实际触摸触发,实际情况并非如此。如果你想按下遥控器上的 Select 按钮来触发你的按钮,你应该使用 PrimaryActionTriggered。

UIControl.Event.primaryActionTriggered 对于 tvOS addTarget 方法是必需的:

button.addTarget(self, action: #selector(ViewController.didTapAcctionButton(_:)), for: .primaryActionTriggered)