Как представить RPBroadcastActivityViewController на iPad.
Я использую стандартный код, чтобы начать запись
RPBroadcastActivityViewController.load { [unowned self] (broadcastActivityViewController, error) in
// If an error has occurred, display an alert to the user.
if let error = error {
self.showAlert(message: error.localizedDescription)
return
}
// Present vc
if let broadcastActivityViewController = broadcastActivityViewController {
broadcastActivityViewController.delegate = self
// present
self.present(...
}
}
Работает на iPhone, но на iPad ничего не отображается, и приложение как бы зависает. Я проверял игры в магазине приложений, в которых используется эта функция, и заметил ту же проблему.
Например, в игре Tower Dash ничего не отображается при нажатии кнопки прямой трансляции на iPad, она работает только на iPhone.
Я пытался поиграть с всплывающими презентациями, но ничего не работает.
Я что-то упускаю?
ОБНОВЛЕНИЕ: похоже, это ошибка. Это происходит даже в собственном приложении Apple Swift Playground.
ОБНОВЛЕНИЕ 2: Apple фактически ответила на мой отчет об ошибке и сказала мне, что мне нужно представить View Controller на iPad в виде всплывающего окна, например так
UIDevice.current.userInterfaceIdiom == .pad {
broadcastAVC.popoverPresentationController?.sourceView = view
broadcastAVC.popoverPresentationController?.sourceRect = CGRect(x: view.bounds.midX, y: view.bounds.midY, width: 0, height: 0)
broadcastAVC.popoverPresentationController?.permittedArrowDirections = UIPopoverArrowDirection.init(rawValue: 0) // no arrow
}
Однако это все еще не работает для меня. Как я уже упоминал, это происходит в собственном приложении Apple Swift Playground, поэтому это должно быть ошибкой.
Исправлена:
Я забыл добавить эту строку в код, упомянутый выше
broadcastAVC.modalPresentationStyle = .popover