iOS知识整理:用笨方法解决拦截html的点击事件

  • 背景故事:
    项目中涉及到一个html的页面.
    wkwebview加载的web页面.
    需要
    “在web中点击返回主页按钮时,返回到原生主页,而非web主页”

2018年一月2号的我还不懂html5和h5与原生的交互.

尝试了很多方法....首先,html5 网站的代码是不能改的...javascript也没有预留和ios交互的接口...里面的页面转换也不能用wkwebview的delegate拦截到...

于是想了一个我自己感觉有点笨的方法...

思路是用UITouch来控制webview的点击事件,每次点击之后过0.5s(留出页面转换的事件)去获取当前的url,如果url是web主页的url就返回到原生主页..

代码如下:
先创建一个名为CustomWKWebView的子类,.h文件如下

- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event {
    
    static UIEvent *e = nil;
    
    if (e != nil && e == event) {
        e = nil;
        return [super hitTest:point withEvent:event];
    }
    
    e = event;
    
    if (event.type == UIEventTypeTouches) {
        NSSet *touches = [event touchesForView:self];
        UITouch *touch = [touches anyObject];
        if (touch.phase == UITouchPhaseBegan) {
            NSLog(@"Touches began");
            NSLog(@"%@",self.URL.absoluteString);
            [self performSelector:@selector(delayMethod)
                       withObject:nil
                       afterDelay:0.5f];
            
        }else if(touch.phase == UITouchPhaseEnded){
            NSLog(@"Touches Ended");
            
        }else if(touch.phase == UITouchPhaseCancelled){
            NSLog(@"Touches Cancelled");
            
        }else if (touch.phase == UITouchPhaseMoved){
            NSLog(@"Touches Moved");
            
        }
    }
    return [super hitTest:point withEvent:event];
}

-(void)delayMethod
{
    NSLog(@"%@",self.URL.absoluteString);
    if ([self.URL.absoluteString isEqualToString:@"主页的url"]) {
        [[NSNotificationCenter defaultCenter] postNotificationName:@"wkwebview-backtohome" object:nil];
    }

}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 174,812评论 25 709
  • 你撕裂我的思维是疲乏倦怠 你拼凑我的肌腱是毁灭新生 你改变不了那一片耕耘过的脑髓 你欲重塑我的根基 流逝的美丽 迷...
    小洲时间阅读 190评论 6 2
  • 豆瓣社区 首页 我的豆瓣 浏览发现 移动应用 游戏 线上活动 脸颊两侧长痘的原因 huangzhouh5314 2...
    123逍遥游阅读 177评论 1 0
  • 我想这便是中国学生的悲哀之处 没有上课,一次外出作业 学生分完组,便头也不回的各自走了 一路上,我想,如果老师看到...
    呵呵哒哒哒888阅读 243评论 0 0