UIGestureRecongnizer 手势拦截

在一个scrollview添加了一个tap的手势事件,然后在scrollview上添加了几个Button,在ios6,ios7 中两个点击事件相安无事,但在ios5中按钮却无法点击,究其原因是因为在ios5中tap手势拦截了button的点击事件,解决方法如下:

1.给手势设置代理

2.在下面的方法中,如果是UIButton的点击就阻止手势的点击事件。

// called before touchesBegan:withEvent: is called on the gesture recognizer for a new touch. return NO to prevent the gesture recognizer from seeing this touch

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch;

{

if([touch.view iskindOfclass [UIButton class]]

{

return No;

}

return YES;

}

不过目前应该不必用到这个了,因为iOS6现在都被淘汰了,更不用说iOS5啦

时间: 2024-12-19 01:52:33

UIGestureRecongnizer 手势拦截的相关文章

解决右滑返回手势和UIScrollView中的手势冲突

项目中遇到一个页面中是以一个scrollview横向Tab展示两个不同功能的显示,譬如消息和公告功能,但是由于滑动返回手势和scrollview的滑动返回手势冲突了,导致页面不再能够滑动返回.类似的还有图片浏览功能也出现过. iOS系统中,滑动返回手势,其实是一个UIPanGestureRecognizer,系统默认的操作是只有滑动屏幕的左边的某个位置,UIPanGestureRecognizer才会起作用.UIScrollView的滑动手势也是UIPanGestureRecognizer.那在

Android自定义之ScrollView下拉刷新

公司项目,需要用到ScrollView的下拉刷新,一开始使用的时候PullToRefresh三方库的下拉刷新,我比较纠结第三档库,很强大,但是,公司项目的需求,PullToRefresh就不能做到了,改来改去的还是自己写一个下拉刷新比较靠谱,很多东西能够自己去控制.效果图就不上传了.直接解释关键代码. ScrollView的下拉刷新比ListView的好做多了. 因为ScroTo的性质,ScrollView的下拉刷新,需要在外部添加一个父布局,通过父布局来控制触摸手势时候下传,什么时候下拉. 我

SlidingMenu开源控件侧拉栏无法滑动问题修复,bug解决,

slidingMenu是gitHub上比较流行的一个侧拉菜单开源控件,前几日自己写了一个开源控件,经过对比,感觉slidingMenu功能更为强大,但是同时,自己写的开源控件,侧拉栏是可以滑动的,比如这样, 手指在侧拉栏处滑动的时候,依旧可以关闭侧拉栏,这个功能很使用,尤其是如图所示,当slidingMenu比较宽的时候,占据比较大的比例,此时用户只能在左边小范围内滑动才能关闭掉, 很坑爹呀 有木有????看了大部分的应用,都有此问题,故分享出来供大家一起学习 但是问题来了,翻遍slidingM

Android开发案例 - 淘宝商品详情【转】

http://erehmi.cnblogs.com/ 所有电商APP的商品详情页面几乎都是和淘宝的一模一样(见下图): 采用上下分页的模式 商品基本参数 & 选购参数在上页展示 商品图文详情等其他信息放在下页展示 知识要点 垂直方向的ViewPager, git: castorflex/VerticalViewPager 手势拦截 & 处理 实现思路 上下分页的设计完全可以用垂直分页来实现, 见知识要点[1] 如果使用垂直分页来实现, 那么问题就来了: 上下分页中的内容肯定是支持垂直滚动的

Android开发案例 - 淘宝商品详情

所有电商APP的商品详情页面几乎都是和淘宝的一模一样(见下图): 采用上下分页的模式 商品基本参数 & 选购参数在上页展示 商品图文详情等其他信息放在下页展示 知识要点 垂直方向的ViewPager, git: castorflex/VerticalViewPager 手势拦截 & 处理 实现思路 上下分页的设计完全可以用垂直分页来实现, 见知识要点[1] 如果使用垂直分页来实现, 那么问题就来了: 上下分页中的内容肯定是支持垂直滚动的, 如此就会和ViewPager的手势冲突, 因此,

Android 事件传递与焦点处理(tv)

1.概述 上节介绍了android tv app 与android mobile app 的一些表现形式的不同.在实际编程中需要很多的焦点处理,而焦点处理有经常是在事件传递函数内处理的.所以本节做个android 事件传递与焦点处理的小结.另既然描述到android事件传递不可避免就涉及到了android手势拦截.这也是对原有知识认识的一个补充,因为之前涉及到安卓事件传递就是为了做手势拦截,以至于当看到代码在手势分发函数里处理tv的焦点,与界面移动填充时.一时有点迷糊,为什么是写在dispath

手势事件

1.基本的手势事件主要有如下三个方法: dispatchTouchEvent : 判断该事件是否需要下发.返回true表示需要下发给下级视图,返回false表示不需要下发(交给自身的onTouchEvent处理).但是否最终下发,还需根据onInterceptTouchEvent的拦截结果. onInterceptTouchEvent : 判断当前容器是否需要拦截该事件.返回true表示予以拦截(交给自身的onTouchEvent处理).不放给下级视图,返回false表示不拦截该事件. onTo

Android ViewGroup触摸事件拦截详解

前言 在自定义ViewGroup中,有时候需要实现触摸事件拦截,比如ListView下拉刷新就是典型的触摸事件拦截的例子.触摸事件拦截就是在触摸事件被parent view拦截,而不会分发给其child,即使触摸发生在该child身上.被拦截的事件会转到parent view的onTouchEvent方法中进行处理.但是这个交互过程还是挺复杂的,有多种情况,今天我们就来分析一下吧.这篇分析文章已经放了一段时间了,如果有任何问题请高人指出. 触摸事件的分发 简单来说触摸事件的分发会经过这么几个顺序

解决ViewPage中嵌套有ListView或者滑动手势等造成滑动的冲突

public class ViewPagerCompat extends ViewPager { //mViewTouchMode表示ViewPager是否全权控制滑动事件,默认为false,即不控制 private boolean mViewTouchMode = false; public ViewPagerCompat(Context context, AttributeSet attrs) { super(context, attrs); } public void setViewTou