Swift 视频图像选择器控制器取消不工作
我使用自定义CropViewController开源imagePicker处理照片,对于视频,我尝试使用Swift自己提供的默认imagePicker,因为CropViewController没有视频选项 从照片库中选择视频后,底部显示三个按钮(取消、播放、选择)。“播放”按钮和“选择”按钮工作正常,但“取消”不起作用 这是我的代码,用于触发照片和视频的imagePickerControllerSwift 视频图像选择器控制器取消不工作,swift,video,uiimagepickercontroller,Swift,Video,Uiimagepickercontroller,我使用自定义CropViewController开源imagePicker处理照片,对于视频,我尝试使用Swift自己提供的默认imagePicker,因为CropViewController没有视频选项 从照片库中选择视频后,底部显示三个按钮(取消、播放、选择)。“播放”按钮和“选择”按钮工作正常,但“取消”不起作用 这是我的代码,用于触发照片和视频的imagePickerController @objc func videoPresentPicker() { let pick
@objc func videoPresentPicker() {
let picker = UIImagePickerController()
picker.delegate = self
picker.sourceType = .photoLibrary
picker.mediaTypes = [kUTTypeMovie as String]
picker.allowsEditing = true
self.present(picker, animated: true, completion: nil)
}
@objc func photoPresentPicker() {
self.croppingStyle = .default
let picker = UIImagePickerController()
picker.delegate = self
picker.sourceType = .photoLibrary
picker.allowsEditing = false
self.present(picker, animated: true, completion: nil)
}
我真的很感激你的帮助。我已经挣扎了几天,终于找到了一些帮助
更新
extension ChatViewController: CropViewControllerDelegate, UIImagePickerControllerDelegate, UINavigationControllerDelegate {
internal func imagePickerControllerDidCancel(_ picker: UIImagePickerController) {
dismiss(animated: true, completion: nil)
}
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
if let videoUrl = info[UIImagePickerController.InfoKey.mediaURL] as? NSURL {
let data = NSData(contentsOf: videoUrl as URL)!
print("File size before compression: \(Double(data.length / 1048576)) mb")
let compressedURL = NSURL.fileURL(withPath: NSTemporaryDirectory() + NSUUID().uuidString + ".m4v")
self.compressVideo(inputURL: videoUrl as URL, outputURL: compressedURL) { (exportSession) in
guard let session = exportSession else {
return
}
switch session.status {
case .unknown:
break
case .waiting:
break
case .exporting:
break
case .completed:
guard let compressedData = NSData(contentsOf: compressedURL) else {
return
}
print("File size after compression: \(Double(compressedData.length / 1048576)) mb")
case .failed:
break
case .cancelled:
break
@unknown default:
break
}
}
} else {
guard let image = (info[UIImagePickerController.InfoKey.originalImage] as? UIImage) else { return }
let cropController = CropViewController(croppingStyle: croppingStyle, image: image)
cropController.delegate = self
imageView.image = image
picker.dismiss(animated: true, completion: {
self.present(cropController, animated: true, completion: nil)
if self.inputTextField.isFirstResponder == true {
self.handleKeyboardWillShow()
}
})
}
transparentView.alpha = 0
self.tableView.frame = CGRect(x: 0, y: 0, width: 0, height: 0)
dismiss(animated: true, completion: nil)
}
只需实现这个功能
func imagePickerControllerDidCancel(_ picker: UIImagePickerController) {
dismiss(animated:true, completion: nil)
}
感谢您的推荐,我已经实现了这个功能,但仍然无法工作。我已根据您的建议更新了代码。请检查我是否将您的代码放在了正确的位置。然后您需要实现相同的功能,但您的CropViewController库除外。在您发布的代码中,您没有展示任何UIImagePickerController,而只是一个CropViewController。您在这里有一个示例,其中包含一些驳回操作:对不起,我可能需要一些时间来理解您的答案。我是斯威夫特的新手。谢谢,我会尽力解释你的答案:)