1

私のアプリケーションでは、ランダムに移動する3つのuiimageviewがあります。imageviewをシングルタップすると非表示になります。しかし、私のタペスチャは機能していません。シングルタップでは非表示になりません。

- (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ファイルのuserInteractionEnabledとにチェックマークを付けてくださいmultipleTouch

また

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

ViewDidLoadで

于 2012-04-12T07:15:37.040 に答える
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 に答える
0

UIGestureRecognizerDelegate を実装し、self に設定しましたか?

于 2012-04-12T06:58:24.540 に答える
-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 に答える