我试图在Xamarin.iOS应用程序中捕获确认面板,但它仅适用于模拟器。
[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 plus 上运行该应用程序时,我收到此错误:
ObjCRuntime.RuntimeException:无法找到块来委托方法 XXXX.iOS.Infrastructure.JSDelegate.RunJavaScriptConfirmPanel 的参数 #4 的转换方法。请在 http://bugzilla.xamarin.com 提交错误。
这是我正在使用的:
环境
苹果手机 11.3Xcode 9.3Xamarin.iOS : 版本: 11.9.1.24 (Visual Studio Community(Visual Studio Mac 7.4.2 (build 12(
任何想法??我不明白为什么只在模拟器官方示例中工作......
Xamarin 的示例仅在模拟器中工作,但我将方法签名更改为:
public override void RunJavaScriptConfirmPanel(WKWebView webView, string message, WKFrameInfo frame, Action completionHandler({
没有任何基础导出,现在正在模拟器和物理设备中工作。