2016-01-08 71 views
2

我希望能夠檢測到印刷機何時開始,因此只有在按下時才能執行動作,並在按下時停止該動作。在swift中,如何檢測按鍵何時開始並在UILabel上結束?

我知道UILabels上有一個pressBegan函數,但我不知道如何使用它,似乎無法找到示例。

+2

的[我怎麼能確定可能的複製如果一個UILabel被感動?](http://stackoverflow.com/questions/2539380/how-can-i-determine-if-a-uilabel-was-touched) – JAL

+0

我不完全確定如何重新創建斯威夫特雖然?我將嘗試編寫這個答案的快速解釋版本 – daredevil1234

+0

您應該創建一個自定義手勢識別器並將其添加到標籤。 – Aurast

回答

5

您可以使用UILongPressGestureRecongizer。

初始化pressGestureRecongizer在你的viewController的viewDidLoad方法,並把它添加到標籤:

let pressGestureRecognizer = UILongPressGestureRecognizer(target: self, action: "handlePress:") 
label.addGestureRecognizer(pressGestureRecognizer) 

,然後你定義handlePress功能

func handlePress(sender: UILongPressGestureRecognizer) { 
    if sender.state == UIGestureRecognizerState.Began { 
     // handle start of pressing 
    } 
    else if sender.state == UIGestureRecognizerState.Ended { 
     // handle end of pressing 
    } 
} 
+0

作爲一個測試,我把這段代碼放入並在if語句中添加了兩個NSLog,並在else中添加了一個,但只有else中的一個if(結束狀態)即將進入控制檯。這是標籤上的唯一手勢。 – daredevil1234

+0

你說得對,UITapGestureRecognizer只調用UIGestureRecongizerState.Ended的動作。我修改了最初的答案。現在它使用UILongPressGestureRecognizer。我也改進了整體設計。 –

+0

謝謝!這有我想要的功能,但它需要一點時間,因爲它是一個長時間按現在,而不是一個正常的媒體。我現在只會忽略那個暫時的延遲,因爲它很瑣碎 – daredevil1234

相關問題