简单的tvOS UIButton无法正常工作

时间:2015-12-16 20:12:39

标签: swift uibutton tvos

我正在尝试实现一个简单的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")
    }
}

要检测按钮点击,我需要做什么?

2 个答案:

答案 0 :(得分:24)

你不应该使用" .TouchDown"或者" .TouchUpInside"在tvOS上,因为那并不是你所期望的:你可能想要使用" UIControlEvents.PrimaryActionTriggered"代替。

TouchUpInside由实际触摸触发,实际上并非如此。如果您想按遥控器上的“选择”按钮来触发按钮,则应使用PrimaryActionTriggered。

答案 1 :(得分:0)

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

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