如何解决注册商无法在 xamarin iOS
大家好,我正在研究与 WebView 相关的项目,到目前为止一切都很好。当我使用 WKNavigationDelegate 并使用模拟器构建时,它可以正常工作,但是当我尝试使用真实设备构建时,它给了我一个错误,我无法发布我的应用程序。 任何帮助将不胜感激谢谢。
-
错误 MT4136:注册商无法封送参数“?”的参数类型“System.Action`2
”在方法“WebKit.IWKNavigationDelegate”中。 (MT4136) (midssamIOSXamarin) -
错误 MT4136:注册商无法封送参数“?”的参数类型“System.Action`2
”在方法“WebKit.IWKNavigationDelegate”中。 (MT4136) (midssamIOSXamarin)
namespace midssamIOSXamarin
{
public partial class ViewController : UIViewController
{
public ViewController (IntPtr handle) : base (handle)
{
}
public override void ViewDidLoad ()
{
base.ViewDidLoad ();
var configuration = new WKWebViewConfiguration();
var controller = new WKUserContentController();
configuration.UserContentController = controller;
var webView = new WKWebView(View.Frame,configuration);
webView.UIDelegate = new JavascriptUIDelegate();
webView.NavigationDelegate = new JavascriptNavigationDelegate();
this.View.AddSubview(webView);
webView.LoadRequest(new NSUrlRequest("test url"));
}
}
public class JavascriptUIDelegate : WKUIDelegate
{
public JavascriptUIDelegate()
{
}
public override void RunJavaScriptAlertPanel(WKWebView webView,string message,WKFrameInfo frame,Action completionHandler)
{
var alert = UIAlertController.Create("",message,UIAlertControllerStyle.Alert);
alert.AddAction(UIAlertAction.Create("확인",UIAlertActionStyle.Default,null));
var rootVC = UIApplication.SharedApplication.Windows[0].RootViewController;
rootVC.PresentViewController(alert,true,completionHandler);
}
public override void RunJavaScriptConfirmPanel(WKWebView webView,Action<bool> completionHandler)
{
var alert = UIAlertController.Create("",action => completionHandler(true)));
alert.AddAction(UIAlertAction.Create("취소",UIAlertActionStyle.Cancel,action => completionHandler(false)));
var rootVC = UIApplication.SharedApplication.Windows[0].RootViewController;
rootVC.PresentViewController(alert,null);
}
}
public class JavascriptNavigationDelegate : WKNavigationDelegate
{
public override void DecidePolicy(WKWebView webView,WKNavigationAction navigationAction,Action<WKNavigationActionPolicy> decisionHandler)
{
decisionHandler(WKNavigationActionPolicy.Allow);
}
public override void DidFailNavigation(WKWebView webView,WKNavigation navigation,NSError error)
{
}
public override void DidFailProvisionalNavigation(WKWebView webView,NSError error)
{
}
public override void DidStartProvisionalNavigation(WKWebView webView,WKNavigation navigation)
{
}
public override void DidFinishNavigation(WKWebView webView,WKNavigation navigation)
{
}
public override void DidCommitNavigation(WKWebView webView,WKNavigation navigation)
{
}
}
}
解决方法
我也是使用 xamarin 的开发人员。 当我尝试实现示例 WebView 应用程序时,我遇到了同样的错误。 处理它的最有效方法是启用 Mono 解释器。
- 在解决方案资源管理器中单击项目名称以打开 项目选项
- 打开“iOS 版本”标签
- 勾选“启用 Mono 解释器”
就我而言,上述方法解决了问题。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。