简单的tvOS UIButton不起作用



我试图实现一个简单的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上使用".TTouchDown"或".TToucheUpInside",因为这并不能达到你的预期:你可能想使用"UIControlEvents.PrimaryActionTriggered"。

TouchUpInside是由实际触摸触发的,这并不是真正发生的事情。如果您希望按下遥控器上的Select按钮来触发您的按钮,您应该使用PrimaryActionTriggered。

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

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

最新更新