uni-app ios uts WKWebView 部分代理没有回调

uni-app ios uts WKWebView 部分代理没有回调

2024-12-19 00:03

4 回复

没有回调说明函数名写错了,在unpackage -> dist -> dev -> app-ios -> uni_modules 目录下找到你的插件的目录,然后查看编译出来的swift文件,对比看哪个函数写错了

更多关于uni-app ios uts WKWebView 部分代理没有回调的实战教程也可以访问 https://www.itying.com/category-93-b0.html


编辑出来的swift,windowFeatures 前面多了个下划线“ _ ”

回复 FullStack: 无参数标签 要加@argumentLabel(""),解决了

在处理 uni-app 中 iOS 平台使用 WKWebView 时遇到的代理没有回调的问题,通常与 WebView 的配置和代理方法实现有关。以下是一些常见的 WKWebView 代理方法及其实现示例,这些示例可以帮助你排查和解决代理没有回调的问题。

首先,确保你的项目中已经正确配置了 WKWebView 并设置了代理。在 uni-app 的原生插件或原生代码中,你可能需要这样做:

#import <WebKit/WebKit.h>

@interface YourViewController : UIViewController <WKNavigationDelegate, WKUIDelegate, WKScriptMessageHandler>

@property (nonatomic, strong) WKWebView *webView;

@end

@implementation YourViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    
    WKWebViewConfiguration *config = [[WKWebViewConfiguration alloc] init];
    self.webView = [[WKWebView alloc] initWithFrame:self.view.bounds configuration:config];
    self.webView.navigationDelegate = self;
    self.webView.UIDelegate = self;
    [self.view addSubview:self.webView];
    
    // Load request or HTML content here
}

#pragma mark - WKNavigationDelegate

- (void)webView:(WKWebView *)webView didStartProvisionalNavigation:(WKNavigation *)navigation {
    NSLog(@"Navigation started");
}

- (void)webView:(WKWebView *)webView didFinishNavigation:(WKNavigation *)navigation {
    NSLog(@"Navigation finished");
}

- (void)webView:(WKWebView *)webView didFailNavigation:(WKNavigation *)navigation withError:(NSError *)error {
    NSLog(@"Navigation failed: %@", error);
}

#pragma mark - WKUIDelegate

- (void)webView:(WKWebView *)webView runJavaScriptAlertPanelWithMessage:(NSString *)message initiatedByFrame:(WKFrameInfo *)frame completionHandler:(void (^)(void))completionHandler {
    UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"Alert" message:message preferredStyle:UIAlertControllerStyleAlert];
    [alert addAction:[UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
        completionHandler();
    }]];
    [self presentViewController:alert animated:YES completion:nil];
}

// Add more WKUIDelegate methods as needed

@end

在上述代码中,我们设置了 WKWebViewnavigationDelegateUIDelegate,并实现了几个常见的代理方法。这些方法会在导航开始、完成或失败时被调用,或者在执行 JavaScript 弹窗时被调用。

如果你在 uni-app 中使用了原生插件来处理 WebView,确保插件正确实现了这些代理方法,并且这些方法没有被其他逻辑错误地覆盖或阻止。

此外,检查以下几点:

  1. 确保 WebView 的加载请求没有被拦截或重定向。
  2. 检查是否有其他代码(如拦截器)干扰了 WebView 的正常行为。
  3. 使用 Xcode 的调试工具,如断点调试和日志输出,来跟踪 WebView 的行为和代理方法的调用情况。

通过这些步骤和代码示例,你应该能够诊断和解决 uni-app 中 iOS 平台 WKWebView 代理没有回调的问题。

回到顶部