检测 Swift 中按钮的点击
Posted
技术标签:
【中文标题】检测 Swift 中按钮的点击【英文标题】:Detecting clicks on a button in Swift 【发布时间】:2014-08-04 23:33:28 【问题描述】:如何在 Xcode 6 游乐场中检测对 Swift 中以下 UIKit
元素的点击?
let testLabel = UILabel(frame: CGRectMake(0, 0, 120, 40))
testLabel.text = "My Button"
【问题讨论】:
你不使用 UIButton 有什么原因吗? 无,除了我是 Swift 新手。是否有一种简单的方法来检测 UIButton 上的点击? 是的,这就是它的本意。这是一个如何以编程方式制作的示例。 ***.com/a/24102198/716216 @hawkharris 仅供参考:您可以使用 UITapGestureRecognizer 检测对 UILabel 的点击,但是是的,在这种情况下使用 UIButton 更有意义 【参考方案1】:UILabel
类仅用于在屏幕上显示文本。当然你可以检测到点击(不是点击),但是有一个UIKit
类专门用于处理屏幕上的操作,那就是UIButton
。
注意:游乐场旨在让您测试代码中的逻辑,而不是事件。如果您想使用 ios 特定的东西,请尝试在 Xcode 6 的 iOS 部分下创建一个单视图应用程序项目。
实现UIButton
,假设您在 Xcode 上的 iOS 项目中:
var button = UIButton(frame: CGRect(x: 0, y: 0, width: 150, height: 60))
button.backgroundColor = UIColor.blackColor()
button.layer.cornerRadius = 3.0
button.setTitle("Tap Me", forState: .Normal)
button.addTarget(self, action: "buttonTapped", forControlEvents: .TouchUpInside)
然后,在同一个 ViewController 类上,创建 buttonTapped
方法:
func buttonTapped()
println("Button tapped!")
【讨论】:
swift 2.2 使用 -- button.addTarget(self, action: #selector(ViewController.buttonTapped), forControlEvents: .TouchUpInside)【参考方案2】:在 Swift 3 中,UIButton
- 作为 UIControl
的子类 - 有一个名为 addTarget(_:action:for:)
的方法。 addTarget(_:action:for:)
有以下声明:
func addTarget(_ target: Any?, action: Selector, for controlEvents: UIControlEvents)
将目标对象和操作方法与控件相关联。
下面的 Playground 代码展示了如何检测按钮的点击:
import PlaygroundSupport
import UIKit
class ViewController: UIViewController
override func viewDidLoad()
super.viewDidLoad()
view.backgroundColor = .white
// Create button
let button = UIButton(type: UIButtonType.system)
button.setTitle("Click here", for: UIControlState.normal)
// Add action to button
button.addTarget(self, action: #selector(buttonTapped(sender:)), for: UIControlEvents.touchUpInside)
// Add button to controller's view
view.addSubview(button)
// Set Auto layout constraints for button
button.translatesAutoresizingMaskIntoConstraints = false
let horizontalConstraint = button.centerXAnchor.constraint(equalTo: view.centerXAnchor)
let verticalConstraint = button.centerYAnchor.constraint(equalTo: view.centerYAnchor)
NSLayoutConstraint.activate([horizontalConstraint, verticalConstraint])
// trigger action when button is touched up
func buttonTapped(sender: UIButton)
print("Button was tapped")
// Display controller in Playground's timeline
let vc = ViewController()
PlaygroundPage.current.liveView = vc
【讨论】:
以上是关于检测 Swift 中按钮的点击的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Swift 检测 iOS 应用程序何时出现在前台? [复制]
在 Swift 3 中检测 iOS9 和 iOS10 上的屏幕锁定或主页按钮按下