点击手势无法在UIimageview上运行

时间:2012-04-12 06:51:53

标签: iphone ios xcode

在我的应用程序中,我有三个随机移动的uiimageview。单击图像视图时,它应该隐藏。但我的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 个答案:

答案 0 :(得分:23)

如果您在xib中添加了图片,请勾选xib文件中的userInteractionEnabledmultipleTouch

image.userInteractionEnabled = YES;
image.multipleTouchEnabled = YES;
ViewDidLoad中的

答案 1 :(得分:0)

您是否实施了UIGestureRecognizerDelegate并设置为自己?

答案 2 :(得分: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未发布。

答案 3 :(得分:0)

试试这个

- (void)showAlert1:(UITapGestureRecognizer *)sender 
{     
  if (sender.state == UIGestureRecognizerStateEnded)     
  {        
     // your handling code
    if (image1.tag==1)
         image1.hidden=TRUE;
    else
         image1.hidden=FALSE;     
  }  
}