将不同的UITapGestureRecognizer添加到UIViews

时间:2014-12-01 06:05:40

标签: ios iphone cocoa-touch

我已经在我的应用中出现了两个地方的自定义UIView。它首先出现在常规视图控制器中,同时显示text view,然后UIView上的点击动作移动到另一个view controller,其中custom UIView被放大显示。我想为放大的UIView设置不同的点击手势,但是当我尝试将其放入storyboard时,第一个点击手势停止工作(因为新的点按手势只能通过第一个点击触及手势是新的视图控制器,我无法看到它是否有效。

将第二个UITapGestureRecognizer添加到视图会导致第一个变为无效吗?我没有看到任何其他原因导致问题。如果是这样,我是否需要为两个不同的自定义UIViews创建单独的类?我试图避免这种情况,因为他们只是以不同的尺寸显示相同的东西,但似乎不同的敲击手势可能会导致问题。

1 个答案:

答案 0 :(得分:0)

在不同的地方添加不同的UITapGesture

<强>视图1

UITapGestureRecognizer *recognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTapBehind1:)];
[recognizer setNumberOfTapsRequired:1];
recognizer.cancelsTouchesInView = NO; 
[View1 addGestureRecognizer:recognizer];

<强>视图2

UITapGestureRecognizer *recognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTapBehind2:)];
[recognizer setNumberOfTapsRequired:1];
recognizer.cancelsTouchesInView = NO; 
[View2 addGestureRecognizer:recognizer];

View1句柄点击方法

- (void)handleTapBehind:(UITapGestureRecognizer *)sender
{
    if (sender.state == UIGestureRecognizerStateEnded)
     {

          [View1 removeGestureRecognizer:sender];

     }
}

View2句柄点击方法

- (void)handleTapBehind:(UITapGestureRecognizer *)sender
{
    if (sender.state == UIGestureRecognizerStateEnded)
     {

          [View2 removeGestureRecognizer:sender];

     }
}