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 でのみ機能します。

ポップオーバー プレゼンテーションをいじってみましたが、何もうまくいかないようです。

何か不足していますか?

更新: これはバグのようです。リンゴ自身の Swift Playground アプリでも、これは起こります。

更新 2: 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 に答える