WKWebView RunJavaScriptConfirmPanel 无法找到要委托的块转换方法



我试图在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({

没有任何基础导出,现在正在模拟器和物理设备中工作。

相关内容

  • 没有找到相关文章

最新更新