xamarin WKWebView, ipad 不支持youtube全屏

xamarin WKWebView, ipad does not support youtube full screen

我使用 WkWebview 渲染器实现了一个 webview。

全屏在 ipone 上工作正常。但它不适用于 iPad.

将出现如下图所示的图像。

我看到一篇文章说要做 webViewConfiguration.allowsInlineMediaPlayback = true 并应用了它,但没有用。有什么问题?

这是我的代码。

   public class MyWebViewRenderer : WkWebViewRenderer, IWKScriptMessageHandler, IWKNavigationDelegate
   {

    WKUserContentController userController;

        public MyWebViewRenderer() : this(new WKWebViewConfiguration())
        {
            
        }

        public MyWebViewRenderer(WKWebViewConfiguration config) : base(config)
        {

            userController = config.UserContentController;
            var script = new WKUserScript(new NSString(_JavascriptFunction_CSharpOpenWeb), WKUserScriptInjectionTime.AtDocumentEnd, false);

            userController.AddUserScript(script);
            
            userController.AddScriptMessageHandler(this, "invokeAction_CSharpOpenWeb");
        }

protected async override void OnElementChanged(VisualElementChangedEventArgs e)
        {
            base.OnElementChanged(e);

          

            if (e.OldElement != null)
            {
                userController.RemoveAllUserScripts();
                userController.RemoveScriptMessageHandler("invokeAction_CSharpOpenWeb");
                MyWebView myWebView = e.OldElement as MyWebView;
                myWebView.Cleanup();
            }

            if (e.NewElement != null)
            {
                this.NavigationDelegate = new MyNavigationDelegate(this);
               
                var webView = (MyWebView)Element;
                 
                webView.UriChanged += async (s1, e1) =>
                {
                    
                        NSUrl nsurl = new NSUrl(webView.Uri);
                        Configuration.AllowsInlineMediaPlayback = true;
                        NSMutableUrlRequest request = new NSMutableUrlRequest(nsurl);
                       
                        await SetCookies();
                      
                        LoadRequest(request);
                };

                if (!string.IsNullOrEmpty(webView.Uri))
                {
                   
                        NSUrl nsurl = new NSUrl(webView.Uri);
                        NSMutableUrlRequest request = new NSMutableUrlRequest(nsurl);
                   

                        await SetCookies();

                        LoadRequest(request);
                }
            }
        }
}

你能告诉我我做错了什么吗?

  1. Configuration.AllowsInlineMediaPlayback = true; 与您想要的相反。

设置为false:

Configuration.AllowsInlineMediaPlayback = false;

  1. 如果这不能解决问题,那么您可能需要在代码的前面执行此操作。

看看在构造函数中完成后是否有效:

public MyWebViewRenderer() : this(new WKWebViewConfiguration())
{
    EnsureFullScreen();
    ...
}
    
public MyWebViewRenderer(WKWebViewConfiguration config) : base(config)
{
    EnsureFullScreen();
    ...
}


private void EnsureFullScreen()
{
    if (Control.Configuration.AllowsInlineMediaPlayback)
        Configuration.AllowsInlineMediaPlayback = false;
}