文档章节

webView添加手势的冲突问题

zh_iOS
 zh_iOS
发布于 2016/04/28 20:57
字数 334
阅读 1053
收藏 2

    首先webView 上添加两个手势,

    // 点击webView 中心区域,从上面和下面弹出两个菜单栏

        UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapWebView:)];

        tap.delegate  = self;

        [self.webView addGestureRecognizer:tap];

        // 长按webView弹出 UIMenuViewController 增加复制 地图 百科等功能.

        UILongPressGestureRecognizer *longPressGesture = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(longPressWebView:)];

        [longPressGesture setDelegate:self];

        [self.webView addGestureRecognizer:longPressGesture];

 

要想让点击手势起作用需要实现 :

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer {

    if ([otherGestureRecognizer isKindOfClass:[UILongPressGestureRecognizer class]] && [gestureRecognizer isKindOfClass:[UITapGestureRecognizer class]]) {

       return YES;

}

 

这样就技能响应点击手势 又能响应长按手势了,但是还有一个问题,那就是长按 webView 中心区域时 既会出现UIMenuController 又会弹出上下菜单栏......!

为了解决这个问题就需要继续在这个手势的代理方法中做手脚了.

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer {

    /**

     *  如果第一个手势是点击第二个是长按就返回NO 不支持同时响应长按和点击手势

     */

    if ([otherGestureRecognizer isKindOfClass:[UILongPressGestureRecognizer class]] && [gestureRecognizer isKindOfClass:[UITapGestureRecognizer class]]) {

        return NO;

    } else {

       return YES;

    }

}

这样一来 长按中心区域就只会出现,U了 而不会弹出上下菜单栏. tap 和 longPress手势又都能响应了!

--------

::要想让UIMenuController弹出菜单控制器必须实现:

-(BOOL)canBecomeFirstResponder

{

    return YES;

}

---复制的实现

 

-(void)menuCopy:(id)sender

{

    [self.webView performSelector:@selector(copy:)];

} 选择和全选的实现同copy!


 

 

© 著作权归作者所有

下一篇: SDWebImage原理
zh_iOS
粉丝 27
博文 79
码字总数 35915
作品 0
石景山
程序员
私信 提问
iOS--H5和iOS的那些事(二)

除了常用到的UIWebView加载H5和交互之外,在开发中可能还会用到其他属性,下面就一一枚举出来分享给大家,也欢迎小伙伴们一起讨论,如有错误的地方欢迎大家指出。 1.获取当前webView的内容高...

橘子star
2017/12/04
0
0
撸一款全手势操作浏览器

晃晃时间过得真快,马上就到年底了。回首2017年也写了不少博客,其中不少是关于UI的。不久前写过一篇《仿夸克浏览器底部工具栏》,不过还是觉得有点不够,于是这次仿写下我觉得很好用的手势操...

2017/12/27
0
0
iOS WKWebView UI增强(上拉刷新,JS交互,加载进度条)

iOS WKWebView UI增强(上拉刷新,JS交互,加载进度条) 需求:WKWebView的一些增加模块,例如上拉刷新,JS交互,加载进度条等等持续更新 阅读前提: } catch(error) { } } (void)headerRefres...

__小___东邪___
2018/11/06
0
0
Android仿今日头条详情页实现

## 源码地址: [Android仿今日头条详情页实现 github源码地址](https://github.com/iceAnson/NewsDetail) [动态图](https://www.diycode.cc/topics/589) 最近项目有个需求,需要实现一个和今...

ice_Anson
2017/02/06
3.8K
0
iOS-关于一些手势冲突问题(scrollView 嵌套 tableView)

简单说下关于开发中容易遇到的父试图添加手势与子试图点击事件冲突,UIScrollView 嵌套 UIScrollView 、 UIScrollView 嵌套 UITableView的情况手势冲突问题; 点击冲突 如果给现有的基于 UI...

macro小K
06/25
0
0

没有更多内容

加载失败,请刷新页面

加载更多

经典系统设计面试题解析:如何设计TinyURL(二)

原文链接:https://www.educative.io/courses/grokking-the-system-design-interview/m2ygV4E81AR 编者注:本文以一道经典的系统设计面试题:《如何设计TinyURL》的参考答案和解析为例,帮助...

APEMESH
20分钟前
7
0
使用logstash同步MySQL数据到ES

概述   在生成业务常有将MySQL数据同步到ES的需求,如果需要很高的定制化,往往需要开发同步程序用于处理数据。但没有特殊业务需求,官方提供的logstash就很有优势了。   在使用logstas...

zxiaofan666
30分钟前
8
0
X-MSG-IM-分布式信令跟踪能力

经过一周多的鏖战, X-MSG-IM的分布式信令跟踪能力已基本具备, 特点是: 实时. 只有要RX/TX就会实时产生信令跟踪事件, 先入kafka, 再入influxdb待查. 同时提供实时sub/pub接口. 完备. 可以完整...

dev5
40分钟前
6
0
OpenJDK之CyclicBarrier

OpenJDK8,本人看的是openJDK。以前就看过,只是经常忘记,所以记录下 图1 CyclicBarrier是Doug Lea在JDK1.5中引入的,作用就不详细描述了,主要有如下俩个方法使用: await()方法,如果当前线...

克虏伯
43分钟前
6
0
实战项目-学成在线(八)

在前后端分离架构中,服务层被拆分成了很多的微服务,微服务的信息如何管理?Spring Cloud中提供服务注册中心来管理微服务信息。 注册中心作用: 1、微服务数量众多,要进行远程调用就需要知...

lianbang_W
44分钟前
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部