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