UIPanGestureRecognizer,touchesMoved;解决多层级 UIPanGestureRecognizer问题

发布时间:2017-1-18 18:00:42 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"UIPanGestureRecognizer,touchesMoved;解决多层级 UIPanGestureRecognizer问题",主要涉及到UIPanGestureRecognizer,touchesMoved;解决多层级 UIPanGestureRecognizer问题方面的内容,对于UIPanGestureRecognizer,touchesMoved;解决多层级 UIPanGestureRecognizer问题感兴趣的同学可以参考一下。

目前在弄ios应用开发,遇到一个gesture的问题,刚解决,乘着热乎丢这里备份。方便自己和大家以后查看。 我的问题是,父窗口需要手势左右切换,子窗口里面有一个需要手势拖动的控件。 父窗口的是UIPanGestureRecognizer,子窗口的是用TouchMoved()的方式。这样父窗口的手势完全屏蔽子窗口。 解决办法很简单: 1、首先在控件里面重新申请一个UIPanGestureRecognizer,注册到一个空响应函数上。 这样做,就是用子窗口对事件响应的优先级来屏蔽父窗口。而且作用域只局限于这个控件的区域,手势在其它区域不会被屏蔽。 2、设置以下属性,因为我原先控件是TouchMoved方式实现,在UIPanGestureRecognizer active的时候会自动屏蔽原先的touchMoved机制。这条语句就避免这个问题。 panGesture.cancelsTouchesInView = FALSE; so ,这样,简单的加个中间过程就把原先的手势优先级给传递回TouchMoved()了。 demo: - (id)initWithFrame:(CGRect)frame {     if((self = [super initWithFrame:frame])) {         [self setDefaultValues];                  UIPanGestureRecognizer *panGesture = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(paned:)];         panGesture.cancelsTouchesInView = FALSE;         [self addGestureRecognizer:panGesture];     }     return self; } - (void) paned:(UIPanGestureRecognizer *)tapGesture {          //it's None here! :     //use to disable panGestrue in DynamicsDrawViewController; }

上一篇:JavaScript Puzzlers javascript解惑
下一篇:UML图(三)类图

相关文章

相关评论