我正在尝试在 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: