Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/99.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 我试图在Swift 3中实现长按,但它被终止_Ios_Swift_Uigesturerecognizer - Fatal编程技术网

Ios 我试图在Swift 3中实现长按,但它被终止

Ios 我试图在Swift 3中实现长按,但它被终止,ios,swift,uigesturerecognizer,Ios,Swift,Uigesturerecognizer,我想使用Swift 3为UIView创建一个长手势点击。我已经做了以下操作,但问题是当我开始点击我的应用程序时,它就被终止了。知道为什么吗 import UIKit class ViewController: UIViewController { @IBOutlet weak var image: UIView! override func viewDidLoad() { super.viewDidLoad() let longGesture =

我想使用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
        }
    }
}

您不应该再使用
选择器(“longTap:”)
语法。而是使用选择器(ViewController.lontap)。问题是,在大重命名之后,选择器的名称不再是您期望的名称。试着在操场上跑步:

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:

标题与你发布的问题有什么关系?请回答您的问题,包括有关错误的详细信息。完整的错误消息是什么?到底是哪一行导致了错误?有崩溃日志吗?加在这里。谢谢。我发现错误在于选择器:)
#选择器(longTap)
在这里就足够了:)@Fogmeister你刚才提到的是真的。但我对斯威夫特还很陌生。所以我想问你,为什么尽管主函数有输入,但我们不必在#选择器(longTap)中提到这一点:)