From 23c075a9c27946773feccf05abc90489a6bf5203 Mon Sep 17 00:00:00 2001 From: wxr <464027401@qq.com> Date: 星期一, 06 七月 2020 15:58:53 +0800 Subject: [PATCH] 20200706 --- Shared.IOS/UI/MyEchartsView.cs | 64 ++++++++++++++++++++++++------- 1 files changed, 49 insertions(+), 15 deletions(-) diff --git a/Shared.IOS/UI/MyEchartsView.cs b/Shared.IOS/UI/MyEchartsView.cs index b39354d..05b73ca 100644 --- a/Shared.IOS/UI/MyEchartsView.cs +++ b/Shared.IOS/UI/MyEchartsView.cs @@ -5,41 +5,41 @@ using System.Collections.Generic; using System; using System.Runtime; +using WebKit; namespace Shared { /// <summary> - /// Button 鎸夐敭 + /// MyEchartsView + /// 2020-06-19 UIWebView鏇挎崲涓篧KWebView + /// UIWebView宸茬粡寮冪敤锛屽悗闈㈠啀浣跨敤鐨凙PP灏嗕笉鑳藉彂甯冧笂鏋� /// </summary> public class MyEchartsView : View { JsonData jsonData = new JsonData { }; - UIWebView uIWebView; + WKWebView uIWebView; public MyEchartsView() { - uIWebView = new UIWebView { }; + //榛樿甯冨眬锛屽楂樹负0鐨勮瘽浼氬紓甯� + var mFrame = new CoreGraphics.CGRect(base.X, base.Y, 10, 10); + uIWebView = new WKWebView(mFrame, new WKWebViewConfiguration()) { }; uiView = uIWebView; uIWebView.ScrollView.Bounces = false; uIWebView.ScrollView.ScrollEnabled = false; + uIWebView.NavigationDelegate = new OnWKNavigationDelegate(this); var filePath = NSBundle.MainBundle.PathForResource("echarts", "html"); - var url = new NSUrl(filePath); - var request = new NSUrlRequest(url); - uIWebView.LoadRequest(request); - uIWebView.LoadFinished += (sender, e) => { - uIWebView.EvaluateJavascript($"loadEcharts({Newtonsoft.Json.JsonConvert.SerializeObject(jsonData)},'undefined')"); - }; + var url = new NSUrl(filePath, false); + uIWebView.LoadFileUrl(url, url); } + public void Show(string title, string[] xArray, object[] yArray) { jsonData.Title = title; jsonData.XArray = xArray; jsonData.YArray = yArray; - uIWebView.EvaluateJavascript($"loadEcharts({Newtonsoft.Json.JsonConvert.SerializeObject(jsonData)},'undefined')"); + EvaluateJavascript(); } - ///Users/hdl/MyFiles/My/Xamarin/MyApp/Library/Shared.IOS/UI/MyEchartsView.cs(30,30): Error CS0012: The type 'Attribute' is defined in an assembly that is not referenced.You must add a reference to assembly 'netstandard, Version=2.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51'. (CS0012) (Shared.IOS) - ///Users/hdl/MyFiles/My/Xamarin/MyApp/Demo/IOS/MTOUCH: Error MT2101: Can't resolve the reference 'System.Reflection.Emit.ILGenerator System.Reflection.Emit.DynamicMethod::GetILGenerator()', referenced from the method 'Newtonsoft.Json.Serialization.ObjectConstructor`1<System.Object> Newtonsoft.Json.Utilities.DynamicReflectionDelegateFactory::CreateParameterizedConstructor(System.Reflection.MethodBase)' in 'mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'. (MT2101) (Demo.IOS) - ///Users/hdl/MyFiles/My/Xamarin/MyApp/Demo/IOS/MTOUCH: Error MT2101: Can't resolve the reference 'System.Reflection.Emit.ILGenerator System.Reflection.Emit.DynamicMethod::GetILGenerator()', referenced from the method 'Newtonsoft.Json.Serialization.ObjectConstructor`1<System.Object> Newtonsoft.Json.Utilities.DynamicReflectionDelegateFactory::CreateParameterizedConstructor(System.Reflection.MethodBase)' in 'mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'. (MT2101) (Demo.IOS) - ///Users/hdl/MyFiles/My/Xamarin/MyApp/Demo/IOS/MTOUCH: Error MT2101: Can't resolve the reference 'System.Reflection.Emit.ILGenerator System.Reflection.Emit.DynamicMethod::GetILGenerator()', referenced from the method 'Newtonsoft.Json.Serialization.ObjectConstructor`1<System.Object> Newtonsoft.Json.Utilities.DynamicReflectionDelegateFactory::CreateParameterizedConstructor(System.Reflection.MethodBase)' in 'mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'. (MT2101) (Demo.IOS) + public string Unit { get @@ -52,7 +52,41 @@ } } - + public void EvaluateJavascript() + { + WKJavascriptEvaluationResult handler = (NSObject result, NSError err) => { + if (err != null) + { + HDLUtils.WriteLine("EvaluateJavascript:" + err); + } + if (result != null) + { + HDLUtils.WriteLine("EvaluateJavascript:" + result); + } + }; + uIWebView.EvaluateJavaScript($"loadEcharts({Newtonsoft.Json.JsonConvert.SerializeObject(jsonData)},'undefined')", handler); + + } + + + public class OnWKNavigationDelegate : WKNavigationDelegate + { + [Weak] MyEchartsView _MyEchartsView; + + public OnWKNavigationDelegate(MyEchartsView view) + { + _MyEchartsView = view; + } + + + public override void DidFinishNavigation(WKWebView webView, WKNavigation navigation) + { + Console.WriteLine("WKWebView DidFinishNavigation"); + _MyEchartsView.EvaluateJavascript(); + } + } + + [Serializable] class JsonData { -- Gitblit v1.8.0