| 
					
				 | 
			
			
				@@ -310,8 +310,15 @@ public class BFRecordScreenController: BFBaseViewController { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             BFLog(1, message: "haveSpeak is:\(haveSpeak),noHaveSpeak is:\(noHaveSpeak)") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             self?.haveSpeakVolume = haveSpeak / 100.0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             self?.noSpeakVolume = noHaveSpeak / 100.0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//            self?.assetPlayer?.volume = self?.noSpeakVolume 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if !(self?.isNormalPlaying ?? false) && !(self?.isRecording ?? false) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (self?.deleteRecordBtn.isHidden ?? false)  { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    self?.recordPlayer?.volume = 0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    self?.assetPlayer?.volume = self?.noSpeakVolume ?? 1.0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    self?.recordPlayer?.volume = 1.0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    self?.assetPlayer?.volume = self?.haveSpeakVolume ?? 0.0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         return audioSettingView 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -514,7 +521,7 @@ public class BFRecordScreenController: BFBaseViewController { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         // MARK: -  录音结束 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        recorderManager?.endRecordHandle = { [weak self] voideModel, _ in 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        recorderManager?.endRecordHandle = { [weak self, weak recorderManager] voideModel, _ in 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             if let sself = self, let model = voideModel, FileManager.default.fileExists(atPath: model.wavFilePath ?? "") { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 // 加入到语音数组里 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 model.endCMTime = sself.currentAssetProgress 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -602,6 +609,7 @@ public class BFRecordScreenController: BFBaseViewController { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 sself.currentPlayRecordIndex = -3 // 刚录音完,不需要播放录音 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 BFLog(3, message: "重置播放index-\(#function) = \(sself.currentPlayRecordIndex)") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                recorderManager?.voiceModel = nil 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         recorderManager?.cancelRecordHandle = { [weak self] voiceModel in 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -637,9 +645,6 @@ public class BFRecordScreenController: BFBaseViewController { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         bottomeView.addSubview(progreddL) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         //        view.addSubview(toolV) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         bottomeView.addSubview(recordBtn) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if itemModels[currItemModelIndex].mediaType == .IMAGE { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            recordBtn.isEnabled = true 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         bottomeView.addSubview(deleteRecordBtn) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         bottomeView.addSubview(withDrawBtn) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         //        bottomeView.addSubview(changeVoiceBtn) 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -847,13 +852,17 @@ public class BFRecordScreenController: BFBaseViewController { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         switch recognizer.state { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         case .began: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             touchStart = recognizer.location(in: bottomeView) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            beginOnStartBtn = recordBtn.frame.contains(touchStart) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            beginOnStartBtn = (beginOnStartBtn || recordBtn.frame.contains(touchStart)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            BFLog(1, message: "beginOnStartBtn:\(beginOnStartBtn)") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         case .changed: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             if beginOnStartBtn == true { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 let nowPoint = recognizer.location(in: bottomeView) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 BFLog(1, message: "nowPoint x: \(nowPoint.x) y:\(nowPoint.y)") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 if recordBtn.frame.contains(nowPoint) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                } else {} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                     
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         case .ended: 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -973,12 +982,11 @@ public class BFRecordScreenController: BFBaseViewController { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if isDragingProgressSlder { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        // 开始时间 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        let model = PQVoiceModel() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        model.startCMTime = currentAssetProgress 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        isRecording = true 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+         
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 //        progressThumV.progressView.isUserInteractionEnabled = false 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        collectionView.isScrollEnabled = false 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        collectionView.isScrollEnabled = false 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         // 开始录制时清除屏幕上的字幕 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         subtitleLabel.text = "" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         subtitleLabel.backgroundColor = UIColor.clear 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -988,9 +996,16 @@ public class BFRecordScreenController: BFBaseViewController { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             BFLog(message: "录音机初始化错误!!!") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+         
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+         
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // 开始时间 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        beginOnStartBtn = true 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        isRecording = true 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        view.isUserInteractionEnabled = false 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        UIApplication.shared.keyWindow?.isUserInteractionEnabled = false 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let model = PQVoiceModel() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        model.startCMTime = currentAssetProgress 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         model.volume = 100 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         recorderManager?.voiceModel = model 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         recorderManager?.startRecord() 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1023,11 +1038,13 @@ public class BFRecordScreenController: BFBaseViewController { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if !isRecording { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        beginOnStartBtn = false 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         isRecording = false 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 //        progressThumV.progressView.isUserInteractionEnabled = true 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        collectionView.isScrollEnabled = true 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        collectionView.isScrollEnabled = true 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        view.isUserInteractionEnabled = true 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        UIApplication.shared.keyWindow?.isUserInteractionEnabled = true 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         recorderManager?.stopRecord(isCancel: false) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if currentAssetProgress.seconds - (recorderManager?.voiceModel?.startCMTime.seconds ?? 0) >= 1.0 { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1053,8 +1070,9 @@ public class BFRecordScreenController: BFBaseViewController { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @objc func cancleRecord() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         isRecording = false 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         recorderManager?.stopRecord(isCancel: true) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        progressThumV.progressView.isUserInteractionEnabled = true 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        collectionView.isScrollEnabled = true 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        progressThumV.progressView.isUserInteractionEnabled = true 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        collectionView.isScrollEnabled = true 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        UIApplication.shared.keyWindow?.isUserInteractionEnabled = true 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         pause() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1579,8 +1597,11 @@ public class BFRecordScreenController: BFBaseViewController { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             DispatchQueue.main.async { [weak self, weak itemModel] in 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                 self?.progressThumV.recordItem = itemModel 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                 self?.progressThumV.isHidden = false 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                self?.recordBtn.isEnabled = true 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        recordBtn.isEnabled = true 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1631,7 +1652,6 @@ public class BFRecordScreenController: BFBaseViewController { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             assetPlayer = AVPlayer(playerItem: item) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             assetPlayer?.volume = noSpeakVolume 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            recordBtn.isEnabled = true 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             avplayerTimeObserver?.invalidate() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             avplayerTimeObserver = assetPlayer?.addPeriodicTimeObserver(forInterval: CMTime(value: 1, timescale: 1000), queue: DispatchQueue.global()) { [weak self] time in 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 // 进度监控 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1871,7 +1891,10 @@ extension BFRecordScreenController: UICollectionViewDelegate, UICollectionViewDa 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         cell.btnClickHandle = { [weak self] sender, _ in 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            self?.playVideo(btn: sender) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            guard let sself = self else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            sself.playVideo(btn: sself.playBtn) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         cell.recordItem = recordItem 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         return cell 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1894,6 +1917,8 @@ extension BFRecordScreenController: UICollectionViewDelegate, UICollectionViewDa 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         BFLog(1, message: "滚动结束") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         let page = Int((scrollView.contentOffset.x + scrollView.frame.width / 2) / scrollView.frame.width) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if page != currItemModelIndex { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            // 切换素材时先把录制状态切为不可用,延迟可点,避免在缩略图未加载出来时即可录制 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            recordBtn.isEnabled = false 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             // 暂停 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             pause() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             // 如果在录制中,停止录制 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1913,9 +1938,11 @@ extension BFRecordScreenController: UICollectionViewDelegate, UICollectionViewDa 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             playBtn.isSelected = (recordItem.mediaType == .IMAGE && recordItem.voiceStickers.count <= 0) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             // 重绘录音区域 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             progressThumV.recordItem = recordItem 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            DispatchQueue.main.asyncAfter(deadline: .now() + 0.1) { [weak self] in 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            DispatchQueue.main.asyncAfter(deadline: .now() + 0.2) { [weak self] in 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 /// 重绘录音进度视图 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 self?.resetAllIndirectionView() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                // 重绘录音进度 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                self?.recordBtn.isEnabled = true 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             // 更新缩略图 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             progressThumV.isHidden = false 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1935,8 +1962,6 @@ extension BFRecordScreenController: UICollectionViewDelegate, UICollectionViewDa 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             if recordItem.mediaType == .VIDEO { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 reloadMaterial() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 assetPlayer?.seek(to: .zero, toleranceBefore: CMTime(value: 1, timescale: 1_000_000), toleranceAfter: CMTime(value: 1, timescale: 1_000_000)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                recordBtn.isEnabled = true 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             if changeItemHandle != nil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 changeItemHandle!(page) 
			 |