|
|
@@ -12,11 +12,18 @@ import CocoaLumberjack
|
|
|
|
|
|
protocol IMChatAudioViewDelegate {
|
|
|
func sendVoice(path: String, voice: Data, duration: String)
|
|
|
+ func showAudioRecordingView() //录音状态
|
|
|
+ func hideAudioRecordingView() //关闭录音状态
|
|
|
+ func changeRecordingView2uplide() //取消发送的状态
|
|
|
+ func changeRecordingView2down()// 可以发送的状态
|
|
|
}
|
|
|
class IMChatAudioView: UIView {
|
|
|
|
|
|
@IBOutlet weak var audioViewTitle: UILabel!
|
|
|
@IBOutlet weak var audioRecordBtn: UIButton!
|
|
|
+ @IBOutlet weak var audioBtnContainer: UIView!
|
|
|
+
|
|
|
+ private var touchBtn: AudioTouchButton?
|
|
|
|
|
|
private var isCancel = false
|
|
|
|
|
|
@@ -29,9 +36,36 @@ class IMChatAudioView: UIView {
|
|
|
var delegate: IMChatAudioViewDelegate?
|
|
|
|
|
|
override func awakeFromNib() {
|
|
|
- audioRecordBtn.addTarget(self, action: #selector(startRecord), for: .touchDown)
|
|
|
- audioRecordBtn.addTarget(self, action: #selector(cancelRecord), for: .touchDragExit)
|
|
|
- audioRecordBtn.addTarget(self, action: #selector(finishRecord), for: .touchUpInside)
|
|
|
+// audioRecordBtn.addTarget(self, action: #selector(startRecord), for: .touchDown)
|
|
|
+// audioRecordBtn.addTarget(self, action: #selector(cancelRecord), for: .touchDragExit)
|
|
|
+// audioRecordBtn.addTarget(self, action: #selector(finishRecord), for: .touchUpInside)
|
|
|
+
|
|
|
+ let audioTouchBtn = AudioTouchButton(frame: CGRect(x: 0, y: 0, width: 98, height: 98))
|
|
|
+ self.audioBtnContainer.addSubview(audioTouchBtn)
|
|
|
+ self.touchBtn = audioTouchBtn
|
|
|
+ self.touchBtn?.touchBegan = {
|
|
|
+ DDLogDebug("touchBegan 点击............这里开始录音.......")
|
|
|
+ self.delegate?.showAudioRecordingView()
|
|
|
+ self.startRecord()
|
|
|
+ }
|
|
|
+ self.touchBtn?.upglide = {
|
|
|
+ self.isCancel = true
|
|
|
+ self.delegate?.changeRecordingView2uplide()
|
|
|
+ }
|
|
|
+ self.touchBtn?.down = {
|
|
|
+ self.isCancel = false
|
|
|
+ self.delegate?.changeRecordingView2down()
|
|
|
+ }
|
|
|
+ self.touchBtn?.touchEnd = {
|
|
|
+ DDLogDebug("touchEnd 点击.........这里结束录音..........")
|
|
|
+ self.delegate?.hideAudioRecordingView()
|
|
|
+ self.finishRecord()
|
|
|
+ }
|
|
|
+// self.touchBtn?.voiceButton?.setTitle("按住说话", for: .normal)
|
|
|
+ self.touchBtn?.voiceButton?.setImage(UIImage(named: "chat_mic"), for: .normal)
|
|
|
+ self.touchBtn?.backgroundColor = UIColor(hex: "#F3F3F3")
|
|
|
+ self.touchBtn?.layer.cornerRadius = 49
|
|
|
+ self.touchBtn?.layer.masksToBounds = true
|
|
|
}
|
|
|
|
|
|
|
|
|
@@ -51,13 +85,13 @@ class IMChatAudioView: UIView {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- @objc private func cancelRecord() {
|
|
|
- DDLogError("cancelRecord record...................")
|
|
|
- self.audioViewTitle.text = "按住说话"
|
|
|
- self.isCancel = true
|
|
|
- //取消录音
|
|
|
- recordManager.cancelledDeleteWithCompletion()
|
|
|
- }
|
|
|
+// @objc private func cancelRecord() {
|
|
|
+// DDLogError("cancelRecord record...................")
|
|
|
+// self.audioViewTitle.text = "按住说话"
|
|
|
+// self.isCancel = true
|
|
|
+// //取消录音
|
|
|
+// recordManager.cancelledDeleteWithCompletion()
|
|
|
+// }
|
|
|
@objc private func finishRecord() {
|
|
|
DDLogError("finish record...................")
|
|
|
self.audioViewTitle.text = "按住说话"
|
|
|
@@ -74,6 +108,9 @@ class IMChatAudioView: UIView {
|
|
|
recordManager.convertCafToMp3(cafPath: recordManager.recordPath!, mp3Path: filePath)
|
|
|
let data = try! Data(contentsOf: URL(fileURLWithPath: filePath))
|
|
|
delegate?.sendVoice(path: filePath, voice: data, duration: recordManager.recordDuration!)
|
|
|
+ }else {
|
|
|
+ //取消录音
|
|
|
+ recordManager.cancelledDeleteWithCompletion()
|
|
|
}
|
|
|
}
|
|
|
}
|