我正在尝试在 Swift 3 中实现长按,但它被终止了
I am trying to implement long pressing in Swift 3 but it gets terminated
我想使用 Swift 3 为 UIView 创建长手势点击。我已经完成了以下操作,但问题是当我开始点击时我的应用程序被终止了。知道为什么吗?
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var image: UIView!
override func viewDidLoad() {
super.viewDidLoad()
let longGesture = UILongPressGestureRecognizer(target: self, action: Selector("longTap:"))
image.addGestureRecognizer(longGesture)
}
func longTap(sender : UIGestureRecognizer){
print("Long tap")
if sender.state == .ended {
image.backgroundColor = UIColor.green
}
else if sender.state == .began {
image.backgroundColor = UIColor.red
}
}
}
您不应再使用 Selector("longTap:")
语法。而是使用 #selector(ViewController.longTap)
。问题是在大重命名之后,选择器的名称不再是您期望的名称。在 playground 中尝试 运行 以下内容:
class Test : NSObject {
func didLongTap1(sender : UIGestureRecognizer) {
}
func didLongTap2(_ sender : Any) {
}
}
print("\(#selector(Test.didLongTap1))")
print("\(#selector(Test.didLongTap2))")
print("\(Selector("didLongTap1:"))")
它打印:
didLongTap1WithSender:
didLongTap2:
didLongTap1:
我想使用 Swift 3 为 UIView 创建长手势点击。我已经完成了以下操作,但问题是当我开始点击时我的应用程序被终止了。知道为什么吗?
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var image: UIView!
override func viewDidLoad() {
super.viewDidLoad()
let longGesture = UILongPressGestureRecognizer(target: self, action: Selector("longTap:"))
image.addGestureRecognizer(longGesture)
}
func longTap(sender : UIGestureRecognizer){
print("Long tap")
if sender.state == .ended {
image.backgroundColor = UIColor.green
}
else if sender.state == .began {
image.backgroundColor = UIColor.red
}
}
}
您不应再使用 Selector("longTap:")
语法。而是使用 #selector(ViewController.longTap)
。问题是在大重命名之后,选择器的名称不再是您期望的名称。在 playground 中尝试 运行 以下内容:
class Test : NSObject {
func didLongTap1(sender : UIGestureRecognizer) {
}
func didLongTap2(_ sender : Any) {
}
}
print("\(#selector(Test.didLongTap1))")
print("\(#selector(Test.didLongTap2))")
print("\(Selector("didLongTap1:"))")
它打印:
didLongTap1WithSender:
didLongTap2:
didLongTap1: