2017-03-10 42 views
-1

我想使用Swift 3爲UIView創建一個長手勢點擊。我做了以下,但問題是當我開始竊聽我的應用程序終止。任何想法爲什麼?我試圖在Swift 3中實現長按,但它被終止

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 
     } 
    } 
} 
+0

是什麼標題都與你貼出的問題?並請[編輯]你的問題,以包括有關錯誤的詳細信息。什麼是完整的錯誤信息?哪一行確切導致錯誤? – rmaddy

+1

任何崩潰日誌?在這裏添加。 – iphonic

+0

謝謝。我發現它是選擇器的錯誤:) –

回答

3

您不應再使用Selector("longTap:")語法。請使用#selector(ViewController.longTap)。問題是在重命名之後,選擇器不再被命名爲你期望的命名。嘗試在操場上運行以下:

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: 
+2

'#selector(longTap)'在這裏已經足夠了:) – Fogmeister

+0

@Fogmeister你剛剛提到的是真的。但我很快就有新意了。所以我想問你爲什麼雖然主函數有輸入,那麼我們不必在#selector(longTap):)中提及 –

相關問題