1

如何在 iPad 上展示 RPBroadcastActivityViewController。

我正在使用标准代码开始录制

   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。

我一直在尝试使用 popover 演示文稿,但似乎没有任何效果。

我错过了什么吗?

更新:这似乎是一个错误。即使在苹果自己的 Swift Playground 应用程序中也会发生这种情况。

UPDATE2:Apple 实际上已经回复了我的错误报告并告诉我我需要将 iPad 上的 View Controller 呈现为像这样的弹出框

  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
  }

但是它仍然对我不起作用。正如我提到的,这发生在苹果自己的 Swift Playground 应用程序上,所以它一定是一个错误。

固定的:

我忘了在上面提到的代码中添加这一行

 broadcastAVC.modalPresentationStyle = .popover
4

2 回答 2

1

您是正确的,Apple 的演示应用程序不包含这个小细节,但这不是错误。这就是我用来让它在 iPad 上工作的方法。iPad 需要一个弹出框来呈现视图,而弹出框需要一个锚点。我选择将其锚定到 leftBarButtonItem。

if let unwrappedPreview = preview {
            unwrappedPreview.previewControllerDelegate = self

            if UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiom.phone {
                self.present(unwrappedPreview, animated: true, completion: nil)
            }
            else {
                unwrappedPreview.popoverPresentationController?.barButtonItem = self.navigationItem.leftBarButtonItem!
                unwrappedPreview.modalPresentationStyle = UIModalPresentationStyle.popover
                unwrappedPreview.preferredContentSize = CGSize(width: self.view.frame.width, height: self.view.frame.height)
                self.present(unwrappedPreview, animated: true, completion: nil)

            }
        }
于 2016-11-07T03:38:02.433 回答
0

iOS 10.1 beta 2 仍然存在同样的问题。

目前,我发现在 iPad 上呈现 a 的唯一方法RPBroadcastActivityViewController是在 trait 集合的水平紧凑环境中呈现它。

因此,在选择支持广播的应用程序之前,您可能需要告诉用户切换到拆分视图模式,然后切换回全屏。返回全屏后,您可以使用RPBroadcastController.startBroadcast(handler:)开始广播。

于 2016-10-08T09:52:03.543 回答