1

在我的应用程序中,我有三个随机移动的 uiimageview。单击 imageview 它应该隐藏。但是我的 Tapgesture 不起作用。单击它不会隐藏。

- (void)showAlert1:(UITapGestureRecognizer *)sender
{
    if (image1.tag == 1)
    {
        image1.hidden = TRUE;
    }
    else
    {
        image1.hidden = FALSE;
    }
}

- (void)showAlert2:(UITapGestureRecognizer *)sender
{
    if (image1.hidden == TRUE && image3.hidden == FALSE)
    {
        image2.hidden = TRUE;
    }
    else
    {
        image2.hidden = FALSE;
    }
}

- (void)showAlert3:(UITapGestureRecognizer *)sender
{
    if (image1.hidden == TRUE && image2.hidden == TRUE)
    {
        image3.hidden = TRUE;
    }
    else
    {
        image3.hidden = FALSE;
    }
}

- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];
    if (image1.tag == 1)
    {
        image1.userInteractionEnabled = YES;

        UITapGestureRecognizer* tap = [[UITapGestureRecognizer alloc] initWithTargetelf actionselector(imageAlerts];
        tap.numberOfTapsRequired = 1;
        [image1 addGestureRecognizer:tap];
    }

    if (image2.tag == 2)
    {
        image2.userInteractionEnabled = YES;

        UITapGestureRecognizer* tap = [[UITapGestureRecognizer alloc] initWithTargetelf actionselector(showAlert2];
        tap.numberOfTapsRequired = 1;
        [image2 addGestureRecognizer:tap];
    }

    if (image3.tag == 3) 
    {
        image3.userInteractionEnabled = YES;

        UITapGestureRecognizer* tap = [[UITapGestureRecognizer alloc] initWithTargetelf actionselector(showAlert3];
        tap.numberOfTapsRequired = 1;
        [image3 addGestureRecognizer:tap];
    }
}

谁能帮我?

提前致谢

4

4 回答 4

25

如果您在 xib 中添加了图像,请选中xib 文件中的userInteractionEnabledandmultipleTouch

或者

image.userInteractionEnabled = YES;
image.multipleTouchEnabled = YES;

在 ViewDidLoad

于 2012-04-12T07:15:37.040 回答
0

您是否实现了 UIGestureRecognizerDelegate 并设置为 self?

于 2012-04-12T06:58:24.540 回答
0

试试这个 -

- (void)viewWillAppearBOOL:animated
{

[super viewWillAppear:animated];

if (image1.tag==1)

{

image1.userInteractionEnabled = YES;

UITapGestureRecognizer* tap = [[UITapGestureRecognizer alloc] initWithTargetelf actionselector(showAlert1:];

tap.numberOfTapsRequired = 1;

[image1 addGestureRecognizer:tap];

}

if (image2.tag==2) 

{

image2.userInteractionEnabled = YES;

UITapGestureRecognizer* tap = [[UITapGestureRecognizer alloc] initWithTargetelf actionselector(showAlert2:];

tap.numberOfTapsRequired = 1;

[image2 addGestureRecognizer:tap];

}
if (image3.tag==3) 

{

image3.userInteractionEnabled = YES;

UITapGestureRecognizer* tap = [[UITapGestureRecognizer alloc] initWithTargetelf actionselector(showAlert3:];

tap.numberOfTapsRequired = 1;

[image3 addGestureRecognizer:tap];

}
}

它也有内存泄漏。UIGesture添加到图像后不释放。

于 2012-04-12T07:11:18.637 回答
-1

试试这个

- (void)showAlert1:(UITapGestureRecognizer *)sender 
{     
  if (sender.state == UIGestureRecognizerStateEnded)     
  {        
     // your handling code
    if (image1.tag==1)
         image1.hidden=TRUE;
    else
         image1.hidden=FALSE;     
  }  
}
于 2012-04-12T07:28:03.510 回答