Метод делегата UIVideoEditorController вызывается дважды - PullRequest
0 голосов
/ 11 июня 2018

Я использую UIVideoEditorController, но метод делегата успеха вызывается для меня дважды.Однако все указатели всех переданных объектов сообщают, что он отправляет одни и те же данные.

let editor = UIVideoEditorController()
editor.videoMaximumDuration = 10.0
editor.videoQuality = .typeIFrame1280x720
editor.delegate = self
editor.videoPath = // some path goes here
self.present(editor, animated: true, completion: nil)

И затем следующий метод печатает "здесь" 2 раза.

func videoEditorController(_ editor: UIVideoEditorController, didSaveEditedVideoToPath editedVideoPath: String) {
    print("here")
    self.dismiss(animated: true, completion: nil)
}

Ответы [ 3 ]

0 голосов
/ 07 августа 2018

Не могли бы вы отладить, что ваш UIViewController, который с помощью UIVideoEditorController перераспределяется правильно, когда пользователь покидает экран.Как после ухода с экрана или возврата с экрана.

Может быть одним объектом вашего UIViewController в памяти, поэтому ваш метод вызывается дважды.

Для отладки этого

  • create deinit{ print("deallocating") }для вас UIViewController.
  • добавьте точку останова на печать.
  • и убедитесь, что вызывается deinit.

Надеюсь, это поможет вам.:)

0 голосов
/ 19 июня 2019

эта работа для меня

- (void)videoEditorController:(UIVideoEditorController *)editor didSaveEditedVideoToPath:(NSString *)editedVideoPath {

    [editor dismissViewControllerAnimated:YES completion:^{
        NSLog(@"path = %@", editedVideoPath);
    }];    
}
0 голосов
/ 07 августа 2018

да, я знаю, это плохо, но работает :)

var isSaved:Bool = false

func videoEditorController(_ editor: UIVideoEditorController, didSaveEditedVideoToPath editedVideoPath: String) {
   if(!isSaved) {
      print("here")
      self.isSaved = true
   }
       self.dismiss(animated: true, completion: nil)
   }
...