2017-04-12 87 views
2

在我的主窗口的根視圖控制器類的,我設置了UITapGestureRecognizer屬性。在調用覆蓋的viewDidLoad函數期間,我通過addGestureRecognizer方法將此屬性添加到了圖像屬性中。我也將image.isUserInteractionEnabled設置爲true。UITapGestureRecognizer選擇不被調用

override func viewDidLoad() { 
    image.addGestureRecognizer(tap) 
    image.isUserInteractionEnabled = true 

    self.view.addSubview(image) 
} 

var tap = UITapGestureRecognizer(target: self, action: #selector(imagePressed(_ :))) 

不幸的是,這不會導致imagePressed()在運行時被調用。令我困惑的是下面的代碼產生了預期的結果。

override func viewDidLoad() { 
    var tap = UITapGestureRecognizer(target: self, action:#selector(imagePressed(_ :))) 
    image.addGestureRecognizer(tap) 
    image.isUserInteractionEnabled = true 

    self.view.addSubview(image) 
} 

所以我的問題是,爲什麼UITapGestureRecognizer的選擇沒有得到第一種情況中調用?

使用斯威夫特3的Xcode 8.2.1

+1

如果你貼什麼的代碼是正確的,你會怎麼想到第一次嘗試工作?您點擊聲明不在任何功能!它**屬於** viewDidLoad()*。 – dfd

+0

水龍頭是我的視圖控制器類的屬性 –

+0

我可能是錯的,但我從來沒有見過,也沒有聽說過做一個手勢識別視圖的屬性。我不認爲這是可以做到的。 – dfd

回答

1

我覺得這裏的問題是addGestureRecognizer。 嘗試改變你的viewDidLoad到:

override func viewDidLoad() { 
    var tap = UITapGestureRecognizer(target: self, action:#selector(imagePressed(_ :))) 
    image.isUserInteractionEnabled = true 

    self.view.addSubview(image) 

    image.addGestureRecognizer(tapGesture) 
} 
+0

哦,哦。這就是我想要寫的,所以問題仍然存在 –

+0

那麼,你有沒有更新它?但'imagePressed'仍然沒有調用? –

+0

那麼,我的實際代碼有正確的語法,所以呀,imagePressed仍然沒有被調用。 –

相關問題