2011-10-19 13 views
0

UITapGestureRecognizerUIImageViewに実装しました。最初のタップで動作しています。最初のタップで、その画像を隠してアニメーションを開始しています。アニメーションが完了すると、私は再びイメージを表示しています。しかし、setHidden:FALSEを設定した後、私はそのUIImageViewのTapイベントを取得していません。 UIImageViewが2回目のジェスチャを認識していません

UIImageViewが隠されている

- (void)viewDidLoad{ 

[super viewDidLoad]; 

defaultDogView= [[UIImageView alloc] initWithFrame:CGRectMake(3, 270, 110, 210)]; 
[defaultDogView setImage:[UIImage imageNamed:@"dog1.png"]]; 
defaultDogView.userInteractionEnabled = YES; 
[self addGestureRecognizersToPiece:defaultDogView]; 


[self.view addSubview:defaultDogView]; 
} 

- (void)addGestureRecognizersToPiece:(UIImageView *)piece 
{ 
NSLog(@"in Gesture"); 
    UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(singleTapPiece:)]; 
[tapGesture setDelegate:self]; 

[piece addGestureRecognizer:tapGesture]; 
[tapGesture release]; 

UILongPressGestureRecognizer *longPressGesture = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(longPressPiece:)]; 
[piece addGestureRecognizer:longPressGesture]; 
[longPressGesture release]; 

NSLog(@"%@", [piece gestureRecognizers]); 
} 
- (void)singleTapPiece:(UITapGestureRecognizer *)gestureRecognizer 
{ 
NSLog(@"Image Tapped"); 

/** Hide the default Image and start the animation ***/ 

[defaultDogView setHidden:TRUE]; 

/***Animating the Dog***/ 
[dogArray addObject:[SpriteHelpers setupAnimatedDog:self.view numFrames:69 withFilePrefix:@"dog" withDuration:(12) ofType:@"png" withValue:0]]; 
dogView = [dogArray objectAtIndex:0]; 
//[self addGestureRecognizersToPiece:dogView]; 



[self performSelector:@selector(callBubbleUpdater) withObject:nil afterDelay:5.5]; 


} 
-(void)showDogFrame{ 
NSLog(@"%@",[defaultDogView gestureRecognizers]); 
[defaultDogView setHidden:FALSE]; 
defaultDogView.userInteractionEnabled = YES; 

} 

答えて

0

てください:

は、私が使用していたコードです。 viewhiddenであるか、またはその alpha成分は任意 UIGestureRecognizersを受信しません表示 zeroであるとき、それはuiimageview

+0

はいsakrist、あなたは正しいですが、ここで問題はイメージを隠すか表示するためではありません。私がhide/showをしていなくても、画像のタップジェスチャーをもう一度得ることができません。しかし、すべてが最初のタップで動作します。私は何が起こっているのかわかりません、私はこれの背後にある理由を見つけることができません。 –

1

ための任意のタッチイベント

セットアルファゼロを受信しません。

私はあなたには、いくつかのビューを非表示にする必要がある場合は、次のアプローチを使用することをお勧めすることができます(のはそれtouchableView名前を付けてみましょう)しかし、それはジェスチャーに反応します:

  1. touchableViewと同じフレームでbackgroundViewを作成します。

    backgroundViewclearColorへの

    UIView *backgroundView = [[UIView alloc] initWithFrame:touchableView.frame];

  2. 設定背景色:

    backgroundView.backgroundColor = [UIColor clearColor];

  3. touchableView

    リセット位置:touchableView

    CGRect frame = touchableView.frame; frame.origin.x = 0; frame.origin.y = 0;

  4. 無効にユーザーとの対話:

    touchableView.userInteractionEnabled = NO;

  5. backgroundViewにサブビューとしてtouchableViewを追加します。

    [backgroundView addSubview:touchableView];

  6. backgroundViewに適切なジェスチャー認識機能を追加します。

  7. backgroundViewを追加してください。

ここでtouchableViewを非表示にすることはできますが、引き続きジェスチャ認識器が表示されます。

私はこれをテストしませんが、動作するはずです。

+0

はい猫さん、あなたは正しいですが、ここで問題は画像を隠したり見せたりすることによるものではありません。私がhide/showをしていなくても、画像のタップジェスチャーをもう一度得ることができません。しかし、すべてが最初のタップで動作します。私は何が起こっているのかわかりません、私はこれの背後にある理由を見つけることができません。 –

+0

あなたは言った: 'setHiddenを設定した後:FALSE、私はそのUIImageViewのTapイベントを取得していない。あなたがイメージを隠さなければ、それは間違っていると言ってもらえませんか?私はその投稿を書くのに10分を費やしました=( – Nekto

+0

残念ながら忘れましたが、これを掲示した後、画像を隠さずにコードを試してみましたが、画像を隠すためではないことが分かりました。その他の問題。 –

関連する問題