【问题标题】:Xamarin.iOS strange behavior for webview showing html5 contain video360显示 html5 的 webview 的 Xamarin.iOS 奇怪行为包含 video360
【发布时间】:2021-11-19 01:43:38
【问题描述】:

我有一个 webview 显示包含带有视频 360 的 HTML5 内容的 URL

public class HybridWebViewRenderer : WkWebViewRenderer
    {
       
        WKUserContentController userController;

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

        public HybridWebViewRenderer(WKWebViewConfiguration config) : base(config)
        {
            userController = config.UserContentController;
           
        }

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

            if (e.OldElement != null)
            {
                HybridWebView hybridWebView = e.OldElement as HybridWebView;
                hybridWebView.Cleanup();
            }

            if (e.NewElement != null)
            {
                BackgroundColor = UIColor.Clear;
                Opaque = false;
                Configuration.AllowsInlineMediaPlayback = true;
                Configuration.Preferences.JavaScriptEnabled = true;
                Configuration.Preferences.JavaScriptCanOpenWindowsAutomatically = true;
            }
        }

        public void DidReceiveScriptMessage(WKUserContentController userContentController, WKScriptMessage message)
        {
            ((HybridWebView)Element).InvokeAction(message.Body.ToString());
        }

        protected override void Dispose(bool disposing)
        {
            if (disposing)
            {
                ((HybridWebView)Element).Cleanup();
            }
            base.Dispose(disposing);
        }
    }

我在中间找到了视频,当我双击它时 它显示为一个单独的窗口,可以关闭

【问题讨论】:

    标签: xamarin.ios wkwebview


    【解决方案1】:

    抱歉,我弄错了在哪里更改配置 应该是这样的

    public class HybridWebViewRenderer : WkWebViewRenderer
        {
           
            WKUserContentController userController;
            static WKWebViewConfiguration config = new WKWebViewConfiguration()
            {
                AllowsAirPlayForMediaPlayback = false,
                AllowsInlineMediaPlayback = true,
                Preferences = new WKPreferences()
                {
                    JavaScriptCanOpenWindowsAutomatically = true,
                    JavaScriptEnabled = true
                }
            };
    
            public HybridWebViewRenderer() : this(config)
            {
            }
    
            public HybridWebViewRenderer(WKWebViewConfiguration config) : base(config)
            {
                userController = config.UserContentController;
               
            }
    
            protected override void OnElementChanged(VisualElementChangedEventArgs e)
            {
                base.OnElementChanged(e);
    
                if (e.OldElement != null)
                {
                    HybridWebView hybridWebView = e.OldElement as HybridWebView;
                    hybridWebView.Cleanup();
                }
    
                if (e.NewElement != null)
                {
                    BackgroundColor = UIColor.Clear;
                    Opaque = false;
                    
                }
            }
    
            public void DidReceiveScriptMessage(WKUserContentController userContentController, WKScriptMessage message)
            {
                ((HybridWebView)Element).InvokeAction(message.Body.ToString());
            }
    
            protected override void Dispose(bool disposing)
            {
                if (disposing)
                {
                    ((HybridWebView)Element).Cleanup();
                }
                base.Dispose(disposing);
            }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-06
      • 2011-10-28
      • 1970-01-01
      相关资源
      最近更新 更多