add single tap to dismiss

This commit is contained in:
ghysrc 2016-05-13 15:10:44 +08:00
parent d4df387efe
commit f162983b70
2 changed files with 19 additions and 24 deletions

View File

@ -9,8 +9,8 @@
import UIKit
@objc protocol SKDetectingImageViewDelegate {
func handleImageViewSingleTap(view: UIImageView, touch: UITouch)
func handleImageViewDoubleTap(view: UIImageView, touch: UITouch)
func handleImageViewSingleTap(touchPoint: CGPoint)
func handleImageViewDoubleTap(touchPoint: CGPoint)
}
class SKDetectingImageView: UIImageView {
@ -23,24 +23,22 @@ class SKDetectingImageView: UIImageView {
override init(frame: CGRect) {
super.init(frame: frame)
userInteractionEnabled = true
let doubleTap = UITapGestureRecognizer(target: self, action: #selector(handleDoubleTap(_:)))
doubleTap.numberOfTapsRequired = 2
doubleTap.numberOfTouchesRequired = 1
self.addGestureRecognizer(doubleTap)
let singleTap = UITapGestureRecognizer(target: self, action: #selector(handleSingleTap(_:)))
singleTap.numberOfTapsRequired = 1
singleTap.numberOfTouchesRequired = 1
singleTap.requireGestureRecognizerToFail(doubleTap)
self.addGestureRecognizer(singleTap)
}
override func touchesEnded(touches: Set<UITouch>, withEvent event: UIEvent?) {
super.touchesEnded(touches, withEvent: event)
let touch = touches.first!
switch touch.tapCount {
case 1 : handleSingleTap(touch)
case 2 : handleDoubleTap(touch)
default: break
}
nextResponder()
func handleDoubleTap(recognizer:UITapGestureRecognizer) {
delegate?.handleImageViewDoubleTap(recognizer.locationInView(self))
}
func handleSingleTap(touch: UITouch) {
delegate?.handleImageViewSingleTap(self, touch: touch)
}
func handleDoubleTap(touch: UITouch) {
delegate?.handleImageViewDoubleTap(self, touch: touch)
func handleSingleTap(recognizer:UITapGestureRecognizer) {
delegate?.handleImageViewSingleTap(recognizer.locationInView(self))
}
}

View File

@ -306,14 +306,11 @@ public class SKZoomingScrollView: UIScrollView, UIScrollViewDelegate, SKDetectin
}
// MARK: - SKDetectingImageViewDelegate
func handleImageViewSingleTap(view: UIImageView, touch: UITouch) {
if photoBrowser?.areControlsHidden() == false && photoBrowser?.enableSingleTapDismiss == true {
photoBrowser?.determineAndClose()
}
photoBrowser?.toggleControls()
func handleImageViewSingleTap(touchPoint: CGPoint) {
photoBrowser?.performCloseAnimationWithScrollView(self)
}
func handleImageViewDoubleTap(view: UIImageView, touch: UITouch) {
handleDoubleTap(touch.locationInView(view))
func handleImageViewDoubleTap(touchPoint: CGPoint) {
handleDoubleTap(touchPoint)
}
}