Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 视频图像选择器控制器取消不工作_Swift_Video_Uiimagepickercontroller - Fatal编程技术网

Swift 视频图像选择器控制器取消不工作

Swift 视频图像选择器控制器取消不工作,swift,video,uiimagepickercontroller,Swift,Video,Uiimagepickercontroller,我使用自定义CropViewController开源imagePicker处理照片,对于视频,我尝试使用Swift自己提供的默认imagePicker,因为CropViewController没有视频选项 从照片库中选择视频后,底部显示三个按钮(取消、播放、选择)。“播放”按钮和“选择”按钮工作正常,但“取消”不起作用 这是我的代码,用于触发照片和视频的imagePickerController @objc func videoPresentPicker() { let pick

我使用自定义CropViewController开源imagePicker处理照片,对于视频,我尝试使用Swift自己提供的默认imagePicker,因为CropViewController没有视频选项

从照片库中选择视频后,底部显示三个按钮(取消、播放、选择)。“播放”按钮和“选择”按钮工作正常,但“取消”不起作用

这是我的代码,用于触发照片和视频的imagePickerController

@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。您在这里有一个示例,其中包含一些驳回操作:对不起,我可能需要一些时间来理解您的答案。我是斯威夫特的新手。谢谢,我会尽力解释你的答案:)