代码之家  ›  专栏  ›  技术社区  ›  crashoverride777

ReplayKit RPBroadcastActivityViewController iPad

  •  1
  • crashoverride777  · 技术社区  · 8 年前

    如何在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上什么都没有显示,应用程序有点冻结。我在应用程序商店查看了使用此功能的游戏,发现了同样的问题。

    E、 游戏Tower Dash上的g当按下iPad上的实时流按钮时,没有显示任何内容,它只适用于iPhone。

    我一直在尝试做波波福演讲,但似乎什么也做不到。

    我错过了什么吗?

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

    更新2:苹果公司实际上已经回复了我的错误报告,并告诉我需要像这样将iPad上的视图控制器作为popover呈现

      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应用程序中会出现这种情况,所以它一定是一个bug。

    固定的:

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

     broadcastAVC.modalPresentationStyle = .popover
    
    2 回复  |  直到 8 年前
        1
  •  1
  •   Chris3643    8 年前

    你说得对,苹果的演示应用程序没有包含这个小细节,但它不是一个bug。这就是我用来让它在iPad上工作的东西。iPad需要一个popover来显示视图,popover需要一个锚。我选择将其锚定到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)
    
                }
            }
    
        2
  •  0
  •   Jonny    8 年前

    现在,我找到了展示 RPBroadcastActivityViewController 在iPad上,它将呈现在trait集合的水平紧凑环境中。

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