2012-01-25 90 views

回答

38

您需要实现UITapGestureRecognizer - 文档here - 在你的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]; 

} 

基本上这个代码是说,当一个UITapGestureself.view方法tapOncetapTwice注册将在self被称为取决于它是单击还是双击。因此,你需要把这些龙头方法添加到您的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]; 
} 

希望帮助

+0

非常感谢您的回答,我会测试它并报告已经快有可能的。 – Bruno

+0

有没有可能Webview识别触摸侧边webview中的链接 – Codesen

+2

[tapOnce requireGestureRecognizerToFail:tapTwice];正是我所期待的。谢谢! – Bastek

2

雨燕3.0版本上双击放大两倍。

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

某处(通常在viewDidLoad中):

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

处理程序:

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)) 
    } 
}