简单的tvOS UIButton无法工作。

问题描述 投票:6回答:2

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

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

swift uibutton tvos
2个回答
26
投票

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

TouchUpInside是由实际的触摸触发的,这并不是真正发生的事情。如果你想让遥控器上的选择按钮触发你的按钮,你应该使用PrimaryActionTriggered。


0
投票

UIControl.Event.primaryActionTriggered 是tvOS所需要的 addTarget 方法。

button.addTarget(self, action: #selector(ViewController.didTapAcctionButton(_:)), for: .primaryActionTriggered)
© www.soinside.com 2019 - 2024. All rights reserved.