在Xcode 6 playground中,我如何检测以下UIKit
元素的点击事件?
let testLabel = UILabel(frame: CGRectMake(0, 0, 120, 40))
testLabel.text = "My Button"
在Xcode 6 playground中,我如何检测以下UIKit
元素的点击事件?
let testLabel = UILabel(frame: CGRectMake(0, 0, 120, 40))
testLabel.text = "My Button"
UILabel
类仅用于在屏幕上显示文本。当然,您可以在其上检测点按(而不是点击),但是有一个专门处理屏幕上操作的UIKit
类,即UIButton
。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 3中,UIButton
是UIControl
的子类,具有一个名为addTarget(_:action:for:)
的方法。 addTarget(_:action:for:)
的声明如下:
func addTarget(_ target: Any?, action: Selector, for controlEvents: UIControlEvents)
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