2013-03-16 106 views
4

滚动型是有一些子视图....
滚动型包含其预定义手势(Pan)和我的自定义手势(潘),以及同时确认它...
子视图中还含有自定义平移手势......
一切都工作正常,除了在SubViews上的平移手势...
当我在做SubView的时候,它的SuperView也得到了接触和处理,我不想...
当在子视图上进行平移时,superView不应该识别它们...
如何阻止传递我的子视图手势到它的SuperView?块传递手势上海华

回答

0

基本上,当你点击子视图,然后超视图手势无法识别,因为你的超视图与子视图重叠。在.H

添加委托,并把它送给tapGestures和给予这样

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch 
{ 
    if([gestureRecognizer.view isKindOfClass:[superView class]]) 
     return NO; 
    else 
     return YES; 
} 
+0

是的,这是假设发生的......但在这种情况下,它不会发生......当我删除超视图的同时手势识别,然后它按预期工作.....任何想法可能是什么? – bhawesh 2013-03-16 10:08:45

+0

因为你有条件并检查来自superview的那一个然后什么都不做。 – Balu 2013-03-16 10:12:32

+0

一旦检查我的更新答案。 – Balu 2013-03-16 10:27:27

9

条件要从响应手势,当有触摸点下子视图可为已完成方框上海华如下:

实施UIGestureDelegate

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

下列方法

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch 
{ 
    return (touch.view == superView); 
} 

并将此代理设置为指派给superView的gestureRecognizer。

我希望这应该做的需要。

+1

对我来说,我不得不在子视图中勾选“启用用户交互”,以使其工作,但它确实如此。 – Dan 2013-12-21 16:05:10