iOS实现WKwebView的点击事件&&事件传递

iOS开发app时,与浏览器交互,点击WKwebView,操作UI组件,由于使用js操作比较麻烦(容易出错,且耗时长,不一定能达到预期效果),现在使用添加一个新类继承WKwebView,给新类添加点击操作,再将事件传递给WKwebView,从而实现WKwebView的点击事件。具体操作如下:

  • 创建一个新类touchView,继承WKwebView
  • 在touchView中添加hitTest触发点击事件
  • 事件传递

创建一个新类touchView,继承WKwebView

@interface touchView : WKWebView
@end

在.m文件使用hitTest实现点击事件

@implementation touchView

- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event{
    UIView *hitView = [super hitTest:point withEvent:event];
    if(hitView){
  //实现事件传递,将此事件抛出,在引用此文件的.m文件中接收
        [[NSNotificationCenter defaultCenter] postNotificationName:@"touchEvent" object:nil];
    }
    return hitView;
}

@end

在有WKWebView组件的viewController中接收touchView中传递的事件

  • 导入touchView
  • 在viewDidLoad中接收事件(NSNotificationCenter)
  • 实现效果
#import "touchView.h"
- (void)viewDidLoad {
    [super viewDidLoad];
  //接收传递过来的事件
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(onPageClick) name:@"touchEvent" object:nil];
}

//实现点击效果
-(void) onPageClick{
  //在这里添加点击后需要操作的代码
}

总结: 在两个不同的页面需要传递事件,分3步,

  • 添加 [[NSNotificationCenter defaultCenter] postNotificationName:@"touchEvent" object:nil]; 抛出事件
  • 接收事件的页面导入 抛出事件页面
  • 接收事件 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(onPageClick) name:@"touchEvent" object:nil];
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容