我有一个包含三个按钮的视图。
一个按钮开始录制音频,另一个按钮停止录制的音频,第三个按钮播放录制的音频。
我想将记录开始和停止压缩到一个按钮,这样当按下它时会记录,但是当它被释放时它会停止记录。
我尝试通过在一个按钮上使用两个事件来触摸以启动录制,然后在内部触摸以停止它,但是它似乎无法正常工作。
答案 0 :(得分:0)
您应该创建一个视图并将其设置为看起来像您想要的按钮,而不是使用UIButton。
然后依靠接触开始&结束了提供所需功能的方法。在这种特殊情况下,我创建了一个可以使用的自定义视图类。
以下代码适用于Swift 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
}
}
答案 1 :(得分:0)
使用已附加UILongPressGestureRecognizer的UIButton。当识别器确定用户手指在视图上时,您会收到.began
消息,并在手指抬起时发出.ended
消息。设置按钮isSelected
以指示&#34; down&#34;状态:
@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
}
}