vs2017 ios使用历程

  1. UIView的使用。
    加载本地html的方法:
    var context = (JSContext)WebView.ValueForKeyPath((NSString)"documentView.webView.mainFrame.javaScriptContext");
                context.ExceptionHandler = (JSContext context2, JSValue exception) =>
                {
                    Console.WriteLine("JS exception: {0}", exception);
                };
                //可以使用 js调用 c# 代码,和安卓一样,通过使用 myCSharpObject对象调用c#方法
                var myExporter = new MyJSExporter();
                context[(NSString)"myCSharpObject"] = JSValue.From(myExporter, context);
    
                //var nsUrl = new NSUrl("demoTest.html", false);
                //var nsRequest = NSUrlRequest.FromUrl(nsUrl);
    
    
                NSUrl url = NSBundle.MainBundle.GetUrlForResource("main", "html");
                string htmlString = NSString.FromData(NSData.FromUrl(url), NSStringEncoding.UTF8);
    
    
                WebView.LoadHtmlString(htmlString, NSBundle.MainBundle.BundleUrl);
    

      声明接口

    /// <summary>
            /// js调用c#代码的方法接口
            /// </summary>
            [Protocol()]
            interface IMyJSVisibleProtocol : IJSExport
            {
                [Export("myFunc")]
                int MyFunc();
    
                [Export("Arity2:With:")]
                NSObject Arity2With(NSObject arg1, NSObject arg2);
            }
    

      实现方法

     /// <summary>
            /// 方法实现
            /// </summary>
            class MyJSExporter : NSObject, IMyJSVisibleProtocol
            {
                public int MyFunc()
                {
                    Console.WriteLine("Called!");
                    return 42;
                }
    
                public NSObject Arity2With(NSObject arg1, NSObject arg2)
                {
                    Console.WriteLine("Arity 2 function called with " + arg1 + " " + arg2);
                    return (NSNumber)42;
                }
             }
    

      js调用

    <script type="text/javascript">
            function callXamObject() {
                // `myCSharpObject` injected into JS context by C# code `context [(NSString) "myCSharpObject"] = JSValue.From (...etc...`
                alert("123");
                var resultCalculatedInCSharp = myCSharpObject.myFunc();
                document.getElementById("Output").innerHTML = resultCalculatedInCSharp;
            }
    
            function callArity2Method() {
                //Note how this is mapped by [Export ("Arity2:With:")]
                var result = myCSharpObject.Arity2With("foo", "bar");
            }
        </script>
    

      

  2. html中使用的js和css资源,生成使用 BundleResource

猜你喜欢

转载自www.cnblogs.com/xyunp/p/9108734.html