按下按钮可以在按下时调用一个功能,在释放时调用另一个功能?

时间:2016-12-07 00:12:15

标签: ios xcode touch avfoundation avaudiorecorder

我有一个包含三个按钮的视图。

一个按钮开始录制音频,另一个按钮停止录制的音频,第三个按钮播放录制的音频。

我想将记录开始和停止压缩到一个按钮,这样当按下它时会记录,但是当它被释放时它会停止记录。

我尝试通过在一个按钮上使用两个事件来触摸以启动录制,然后在内部触摸以停止它,但是它似乎无法正常工作。

2 个答案:

答案 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
    }
}