2012-04-10 7 views
0

UIView私はそれをタップして4倍に拡大します。それはうまく動作します。次のタップで元のサイズに戻したいと思います。問題は、スケーリング前にUIViewが持っていた小さい方の矩形でのみタップを認識することです。スケーリングされたの任意の場所でタップを認識したいと思います。どうすれば達成できますか?スケーリング後のタップを認識するUITapGestureRecognizer UIView

//Tapping code 
titleCard = [[UIView alloc] initWithFrame: myrect]; 
[self addSubview:titleCard]; 
[titleCard release]; 

UITapGestureRecognizer *tapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(changeSize:)]; 
[tapRecognizer setNumberOfTouchesRequired:1]; 
[tapRecognizer setNumberOfTapsRequired:1]; 
[titleCard addGestureRecognizer:tapRecognizer]; 
[tapRecognizer release]; 

//Scaling code 
CABasicAnimation *scale = [CABasicAnimation animationWithKeyPath:@"transform.scale"]; 
[scale setBeginTime:CACurrentMediaTime()+0.75]; 
[scale setDuration:0.5]; 
[scale setToValue: [NSNumber numberWithFloat:4.0f]]; 
[scale setRemovedOnCompletion:NO]; 
[scale setFillMode:kCAFillModeForwards]; 

ありがとうございます。

答えて

1

ここでは何がうまくいかないのか分かりませんが、私は以下のコードを置き換えました。スケーリングが起こった前に今すぐクリックすると、すべてのUIViewだけでなく、小さな四角形の上に認識されているばかり

[UIView beginAnimations:@"Scale" context:nil]; 
[UIView setAnimationDelay:0.75]; 
[UIView setAnimationDuration:0.5]; 

[titleCard setTransform:CGAffineTransformMakeScale(4.0f, 4.0f); 

[UIView commitAnimations]; 

//Scaling code 
CABasicAnimation *scale = [CABasicAnimation animationWithKeyPath:@"transform.scale"]; 
[scale setBeginTime:CACurrentMediaTime()+0.75]; 
[scale setDuration:0.5]; 
[scale setToValue: [NSNumber numberWithFloat:4.0f]]; 
[scale setRemovedOnCompletion:NO]; 
[scale setFillMode:kCAFillModeForwards]; 
[titleCard.layer addAnimation:scale forKey:@"Scale"]; 

+0

この動作理由は、ジェスチャがビューのサイズに基づいていることです。レイヤーをアニメートすると、ビジュアルが変更されますが、実際にはビューのサイズは変更されません。 置き換えコードは実際にビューのサイズを変更します。 – Skotch

-1

は常にuはのような任意のカウンタ値を置くことができ、ここで を同様のすべてのタップを認識し、その

静的NSInteger *カウンタ= 0;

今回数がカウント値に基づいて、今1

に等しい場合uはズームインズームアウトすることができますカウントが0に等しい場合に1にし、それ0にします。

+0

こんにちはアジェイ、私はその点を理解しました。スケーリングは私にとって問題ではありません。セレクタでのみ呼び出すことです。私の問題は、セレクタにブレークポイントを設定していることです。画像が拡大縮小されていないときはいつも電話がかかります。今度は、最初にタップした後で画像を拡大/縮小します。その後、私はスケーリングされた画像上の任意の数のタップで電話を全く受けない。しかし、UIViewがスケーリングする前に実際に表示していた大きなスケーリングされたイメージの小さな四角形をクリックすると、ヒットします。 –

+0

タップイベントは通常、イメージを呼び出すことはできません。このイメージをtouchableにする必要があります: - (void)touchesBegan:(NSSet *)withEvent :(UIEvent *)イベント{ UITouch * touch = [touches anyObject ]; ([タッチビュー] == yourImageView) } {//ここに 画像タッチ用のコードを追加する}場合 – freelancer

関連する問題