2012-01-25 12 views

Odpowiedz

38

Trzeba wdrożyć UITapGestureRecognizer - docs here - w viewController

- (void)viewDidLoad 
{ 
    [super viewDidLoad];  

    // what object is going to handle the gesture when it gets recognised ? 
    // the argument for tap is the gesture that caused this message to be sent 
    UITapGestureRecognizer *tapOnce = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapOnce:)]; 
    UITapGestureRecognizer *tapTwice = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapTwice:)]; 

    // set number of taps required 
    tapOnce.numberOfTapsRequired = 1; 
    tapTwice.numberOfTapsRequired = 2; 

    // stops tapOnce from overriding tapTwice 
    [tapOnce requireGestureRecognizerToFail:tapTwice]; 

    // now add the gesture recogniser to a view 
    // this will be the view that recognises the gesture 
    [self.view addGestureRecognizer:tapOnce]; 
    [self.view addGestureRecognizer:tapTwice]; 

} 

Zasadniczo ten kod jest powiedzenie, że kiedy UITapGesture jest zarejestrowany w self.view zastosowano metodę tapOnce lub tapTwice zostanie wywołana w self w zależności od tego, czy jest to pojedyncze czy podwójne dotknięcie. Dlatego trzeba dodać te metody kranu do swojej UIViewController:

- (void)tapOnce:(UIGestureRecognizer *)gesture 
{ 
    //on a single tap, call zoomToRect in UIScrollView 
    [self.myScrollView zoomToRect:rectToZoomInTo animated:NO]; 
} 
- (void)tapTwice:(UIGestureRecognizer *)gesture 
{ 
    //on a double tap, call zoomToRect in UIScrollView 
    [self.myScrollView zoomToRect:rectToZoomOutTo animated:NO]; 
} 

nadzieję, że pomoże

+0

Dziękuję bardzo za odpowiedź, będę go przetestować i zgłoś się wkrótce ma się to możliwe. – Bruno

+0

czy to możliwe? Webview rozpoznać dotknąć linków w stronie internetowej – Codesen

+2

[tapOnce requireGestureRecognizerToFail: tapTwice]; jest dokładnie tym, czego szukałem. Dzięki! – Bastek

2

Swift 3.0 wersję, która powiększa dwukrotnie podwójnego dotknięcia.

@IBOutlet weak var scrollView: UIScrollView! 
@IBOutlet weak var imageView: UIImageView! 

Gdzieś (zwykle w viewDidLoad):

let tapRecognizer = UITapGestureRecognizer(target: self, action: #selector(onDoubleTap(gestureRecognizer:))) 
tapRecognizer.numberOfTapsRequired = 2 
scrollView.addGestureRecognizer(tapRecognizer) 

Handler:

func onDoubleTap(gestureRecognizer: UITapGestureRecognizer) { 
    let scale = min(scrollView.zoomScale * 2, scrollView.maximumZoomScale) 

    if scale != scrollView.zoomScale { 
     let point = gestureRecognizer.location(in: imageView) 

     let scrollSize = scrollView.frame.size 
     let size = CGSize(width: scrollSize.width/scale, 
          height: scrollSize.height/scale) 
     let origin = CGPoint(x: point.x - size.width/2, 
          y: point.y - size.height/2) 
     scrollView.zoom(to:CGRect(origin: origin, size: size), animated: true) 
     print(CGRect(origin: origin, size: size)) 
    } 
} 
Powiązane problemy