0

私はUIViewそれをタップした後に4倍に拡大するものを持っています。それは正常に動作します。次のタップで元のサイズに戻したい。UIView問題は、スケーリング前の小さな長方形でのみタップを認識することです。スケーリングされた のどこでもタップを認識したいと思います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];

ありがとう。

4

2 に答える 2

1

ここで何が機能しないのかわかりません。以下のコードを置き換えました。

//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"];

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

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

[UIView commitAnimations];

UIViewこれで、スケーリングが行われる前の小さな四角形だけでなく、クリックが全体で認識されるようになりました。

于 2012-04-16T04:53:59.350 に答える
-1

常にすべてのタップを同様に認識します ここでは、次のような任意のカウンター値を配置できます

static NSInteger *counter=0;

count が 0 の場合は 1 に、count が 1 の場合は 0 にします。

カウントの値に基づいて、ズームインおよびズームアウトできます。

于 2012-04-10T07:16:08.930 に答える