1

UIViewクリックしてズームする必要があり、ズーム中およびズーム後UITapGestureRecognizerに実行したいアプリケーションに取り組んでいます。IBActionこれは可能ですか?その小さな例を教えてください。

4

3 に答える 3

1
- (void)viewDidLoad
{
    [super viewDidLoad];
    UITapGestureRecognizer *tapGestureRecognizer = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(handleDoubleTap:)];
    tapGestureRecognizer.numberOfTapsRequired = 2;
    [self.scrollContainer addGestureRecognizer:tapGestureRecognizer];
}
- (void)handleDoubleTap:(UIGestureRecognizer *)recognizer
{
    if(isAlreadyZoomed)
    {
        CGPoint Pointview = [recognizer locationInView:recognizer.view];
        CGFloat newZoomscal = 3.0;
        CGSize scrollViewSize = self.scrollContainer.bounds.size;
        CGFloat width = scrollViewSize.width/newZoomscal;
        CGFloat height = scrollViewSize.height /newZoomscal;
        CGFloat xPos = Pointview.x-(width/2.0);
        CGFloat yPos = Pointview.y-(height/2.0);
        CGRect rectTozoom = CGRectMake(xPos, yPos, width, height);
        [self.scrollContainer zoomToRect:rectTozoom animated:YES];
        [self.scrollContainer setZoomScale:3.0 animated:YES];
        isAlreadyZoomed = NO;
    }
    else
    {
        [self.scrollContainer setZoomScale:1.0 animated:YES];
        isAlreadyZoomed = YES;
    }
}
于 2013-04-10T13:37:39.383 に答える
0

IBAction は、void を返し、0 または 1 つの引数のみを取る通常のメソッドです。

他の王様のメソッドを呼び出すのと同じように、それらをコードで呼び出すことができます。

UITapGestureRecognizer は、トリガー中に IBAction メソッドを呼び出すように設計されています。InterfaceBuilderまたはコードで設定できます

たとえば、次のコード

 UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(handleTap:)];
tap.numberOfTapsRequired = 2;
[imageView addGestureRecognizer:[tap cop]];

ユーザーがimageViewをダブルタップすると、このメソッドが呼び出されます

- (void) handleTap:(UITapGestureRecognizer *)sender;

このメソッドでは、サブビューの管理、他のメソッドの呼び出しなど、必要なことはほとんど何でもできます。ただし、ズームインとズームアウトを計画している場合は、UIView クラスではなく UIScrollView クラスを使用することを強くお勧めします。 .

乾杯

于 2013-04-10T10:21:33.303 に答える
0

こんにちは、以下があなたにアイデアを与えることを願っています.....

UITapGestureRecognizer *tap2 = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(scrollViewDoubleTapped:)];
 tap2.numberOfTapsRequired = 2;
 [self.view addGestureRecognizer:tap2];


- (void) scrollViewDoubleTapped:(UITapGestureRecognizer *)sender
{
   scrollZoomAdjust.zoomScale=2.0f;// set your required Zoom scale 
   // scrollZoomAdjust is the scroll view that contain the image within it 

}

上記のコードはテストされていません

于 2013-04-10T11:07:26.737 に答える