我试图在Xamarin.iOS App中捕获确认面板,但它只能在模拟器中使用。
[Foundation.Export("webView:runJavaScriptConfirmPanelWithMessage:initiatedByFrame:completionHandler:")]
public void RunJavaScriptConfirmPanel(WKWebView webView, string message, WKFrameInfo frame, Action<bool> completionHandler)
{
var alertController = UIAlertController.Create(null, message, UIAlertControllerStyle.ActionSheet);
alertController.AddAction(UIAlertAction.Create("Sí", UIAlertActionStyle.Destructive, okAction =>
{
completionHandler(true);
}));
alertController.AddAction(UIAlertAction.Create("No", UIAlertActionStyle.Default, cancelAction =>
{
completionHandler(false);
}));
_controller.PresentViewController(alertController, true, null);
}
我正在关注xamarin官方网页(https://developer.xamarin.com/recipes/ios/content_controls/web_view/handle_javascript_alerts/)中的下一个示例,但是当我在iPhone 8上运行该应用时,我收到此错误:
ObjCRuntime.RuntimeException: 无法找到块来委托方法XXXX.iOS.Infrastructure.JSDelegate.RunJavaScriptConfirmPanel的参数#4的转换方法。请在http://bugzilla.xamarin.com提交错误。
这就是我正在使用的:
环境
ios 11.3 Xcode 9.3 Xamarin.iOS:版本:11.9.1.24(Visual Studio社区) Visual Studio Mac 7.4.2(build 12)
任何想法?我不明白为什么只能在模拟器中使用官方示例......
答案 0 :(得分:0)
Xamarin的例子只在模拟器中使用,但我将方法签名更改为:
public override void RunJavaScriptConfirmPanel(WKWebView webView,string message,WKFrameInfo frame,Action completionHandler) {
没有任何Foundation Export,现在正在使用模拟器和物理设备。