我有一個包含三個按鈕的視圖。在按下時調用一個功能並在釋放時調用另一個功能的按鈕?
一個按鈕開始錄製音頻,另一個按鈕停止錄製音頻,第三個按鈕播放錄製的音頻。
我想濃縮記錄開始和停止到一個按鈕,以便按下它時記錄,但然後釋放時停止記錄。
我嘗試用兩個事件上的一個按鈕,觸摸到開始拍攝,然後觸摸起來裏面來阻止它這樣做,但它似乎並沒有正常工作。
我有一個包含三個按鈕的視圖。在按下時調用一個功能並在釋放時調用另一個功能的按鈕?
一個按鈕開始錄製音頻,另一個按鈕停止錄製音頻,第三個按鈕播放錄製的音頻。
我想濃縮記錄開始和停止到一個按鈕,以便按下它時記錄,但然後釋放時停止記錄。
我嘗試用兩個事件上的一個按鈕,觸摸到開始拍攝,然後觸摸起來裏面來阻止它這樣做,但它似乎並沒有正常工作。
而不是使用UIButton,您應該創建一個視圖並將其設置爲您想要的按鈕。
然後依靠觸摸開始&結束的方法來提供您想要的功能。
在這種特殊情況下,我創建了一個可以使用的自定義視圖類。
下面的代碼是對雨燕3.0:
class TouchView : UIView {
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
super.touchesBegan(touches, with: event)
// Start recording
}
override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) {
super.touchesEnded(touches, with: event)
// End recording
}
}
使用一個UIButton到您已連接一個UILongPressGestureRecognizer。當識別器確定用戶正握住手指放在視圖上時,您會收到.began
消息,手指擡起時會收到.ended
消息。設置按鈕isSelected
以指示「停機」狀態:
@IBAction func doPress(_ sender: UILongPressGestureRecognizer) {
switch sender.state {
case .began:
(sender.view as! UIControl).isSelected = true
// start recording
case .ended:
(sender.view as! UIControl).isSelected = false
// stop recording
default: break
}
}