2012-09-20 22 views
0

我在UIImageView中添加了单击和双击的UITapGestureRecognizer。对于单击方法A将会调用,对于双击方法B将会调用。UITapGestureRecognizer.numberOfTapsRequired = 2不工作

它的第一次完美工作。

如果我在做的UIImageView单一的水龙头第一次,果然叫方法的。

如果我在UIImageView上双击,方法B按预期调用。

如果我在做的UIImageView单一的水龙头第二次,按预期的所谓的方法的。

如果我在UIImageView上双击,方法B不会再调用方法A只调用。 我不知道我在哪里做问​​题。

UITapGestureRecognizer *gestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(hideHandle:)]; 
[gestureRecognizer setDelegate:self]; 
[userResizableView addGestureRecognizer:gestureRecognizer]; 
[gestureRecognizer release]; 

UITapGestureRecognizer *gestureRecognizer1 = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTap:)]; 
gestureRecognizer1.numberOfTapsRequired = 2; 

[gestureRecognizer1 setDelegate:self]; 
[userResizableView addGestureRecognizer:gestureRecognizer1]; 
[gestureRecognizer1 release]; 

[gestureRecognizer requireGestureRecognizerToFail:gestureRecognizer1]; 
+1

如果你已经实现了gesturerecognizerdelegate的委托方法,你可以发布这个吗? – banDedo

+0

我发现了这个问题。我在双击委托方法定义中使用removeGestureRecognizer。这是问题所在。感谢您的答复。 – thavasidurai

回答

-1

我测试了你的代码,它工作的很好!

您在释放gestureRecognizer1后添加requireGestureRecognizerToFail。这不应该成为一个问题,因为我在接下来的评论和编辑这个答案后进行测试,但给它一个。也给变量和方法一些有意义的名字。

UITapGestureRecognizer *doubleTapGestureRecognizer = [[UITapGestureRecognizer alloc] 
          initWithTarget:self action:@selector(handleDoubleTap:)]; 
    doubleTapGestureRecognizer.numberOfTapsRequired = 2; 
    [userResizableView addGestureRecognizer:doubleTapGestureRecognizer]; 

    UITapGestureRecognizer *singleTapGestureRecognizer = [[UITapGestureRecognizer alloc] 
          initWithTarget:self action:@selector(handleSingleTap:)]; 
    singleTapGestureRecognizer.numberOfTapsRequired = 1; 
    [singleTapGestureRecognizer requireGestureRecognizerToFail: doubleTapGestureRecognizer]; 
    [userResizableView addGestureRecognizer:singleTapGestureRecognizer]; 

    [doubleTapGestureRecognizer release]; 
    [singleTapGestureRecognizer release]; 
+2

UITagGestureRecognizer的委托设置为确定标记手势选择器是否被触发。这些是正交行为,定义一个选择器并设置一个委托。此外,我怀疑发布不是问题,因为添加了gesturerecognizer的视图保留了gesturerecognizer。 – banDedo

+0

该视图将保留它的过程,但释放指向垃圾内存后使用相同的对象将导致问题!让我们等待问题回来,然后删除你的投票。 LOL – applefreak

+0

@banDedo你是对的好友。我正在接受我的话!我测试了它,它保留了这个对象,并且可以很好地工作。我想知道如何?当您释放对象引用计数递减并且该对象将是悬挂引用。由对象指向的内存不会释放,因为引用计数不会为零!它不应该实际上工作!我从根本上错过了什么吗?竖起大拇指为您的评论:-) – applefreak