【问题标题】:xamarin WKWebView, ipad does not support youtube full screenxamarin WKWebView,ipad不支持youtube全屏
【发布时间】:2022-01-02 07:50:33
【问题描述】:

我使用 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);
                }
            }
        }
}

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

【问题讨论】:

    标签: xamarin xamarin.forms xamarin.ios


    【解决方案1】:
    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;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-10-12
      • 1970-01-01
      • 2018-07-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多