今天看啥  ›  专栏  ›  清风烈酒2157

H5界面打开多级,滑动返回问题

清风烈酒2157  · 简书  ·  · 2020-12-29 15:15

前言

有个需求,在控制器打开一个 H5 界面, H5 界面可能内部多次跳转,如果开启 allowsBackForwardNavigationGestures=yes 左滑可以返回上一层级的H5。但是在滑动返回上一级时候要做个弹窗,来判断是否保留信息,然后在执行滑动。(导航栏按钮返回没问题,现在就是滑动返回存在问题)

  • 分析

WKWebView 有个属性 canGoBack YES 就是可以左滑,为NO表示为第一级。

问题解决

通过重新 goBack 方法,发现并没有什么作用。

  1. 禁用导航栏左滑和WKWebView左滑,在UIWindow添加View,在添加手势,效果不太好。

  2. 通过 UIPanGestureRecognizer 设置target为 self.navigationController.interactivePopGestureRecognizer.delegate ,并将 Action 设置为空。监听 UIPanGestureRecognizer 手势的代理。

id target = self.navigationController.interactivePopGestureRecognizer.delegate;
    UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc] initWithTarget:target action:nil];
    pan.delegate = self;
    [self.view addGestureRecognizer:pan];

监听代理:

当为 canGoBack 为YES事件交给H5开发管理
为NO,自己来管理事件。


- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer
{
    if (self.webView.canGoBack){
        if (![isnull(self.onBackeventName) isEqualToString:@""])
        [self sendNativeCommonMessage:MTWebApponBackEvent
                               params:@{@"name":self.onBackeventName}
         requestCode:@""
        responseCode:@""];
    }else{
        
        [self.navigationController popViewControllerAnimated:YES];
    }
    
    return YES;
    
}



原文地址:访问原文地址
快照地址: 访问文章快照