diff --git a/Example/ImageSlideshow.xcodeproj/project.pbxproj b/Example/ImageSlideshow.xcodeproj/project.pbxproj index 05fa9253..48d53b39 100644 --- a/Example/ImageSlideshow.xcodeproj/project.pbxproj +++ b/Example/ImageSlideshow.xcodeproj/project.pbxproj @@ -378,7 +378,7 @@ files = ( ); inputPaths = ( - "${SRCROOT}/Pods/Target Support Files/Pods-ImageSlideshow_Example/Pods-ImageSlideshow_Example-frameworks.sh", + "${PODS_ROOT}/Target Support Files/Pods-ImageSlideshow_Example/Pods-ImageSlideshow_Example-frameworks.sh", "${BUILT_PRODUCTS_DIR}/AFNetworking/AFNetworking.framework", "${BUILT_PRODUCTS_DIR}/Alamofire/Alamofire.framework", "${BUILT_PRODUCTS_DIR}/AlamofireImage/AlamofireImage.framework", @@ -397,7 +397,7 @@ ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-ImageSlideshow_Example/Pods-ImageSlideshow_Example-frameworks.sh\"\n"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-ImageSlideshow_Example/Pods-ImageSlideshow_Example-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; C32710DF8FE75A6D757948CC /* [CP] Check Pods Manifest.lock */ = { diff --git a/Example/Podfile.lock b/Example/Podfile.lock index 86a66871..ef5c2abc 100644 --- a/Example/Podfile.lock +++ b/Example/Podfile.lock @@ -14,28 +14,28 @@ PODS: - AFNetworking/Serialization (3.2.1) - AFNetworking/UIKit (3.2.1): - AFNetworking/NSURLSession - - Alamofire (4.7.3) - - AlamofireImage (3.4.1): - - Alamofire (~> 4.7) - - ImageSlideshow (1.6.0): - - ImageSlideshow/Core (= 1.6.0) - - ImageSlideshow/AFURL (1.6.0): + - Alamofire (4.8.1) + - AlamofireImage (3.5.0): + - Alamofire (~> 4.8) + - ImageSlideshow (1.7.0): + - ImageSlideshow/Core (= 1.7.0) + - ImageSlideshow/AFURL (1.7.0): - AFNetworking (~> 3.0) - ImageSlideshow/Core - - ImageSlideshow/Alamofire (1.6.0): + - ImageSlideshow/Alamofire (1.7.0): - AlamofireImage (~> 3.0) - ImageSlideshow/Core - - ImageSlideshow/Core (1.6.0) - - ImageSlideshow/Kingfisher (1.6.0): + - ImageSlideshow/Core (1.7.0) + - ImageSlideshow/Kingfisher (1.7.0): - ImageSlideshow/Core - Kingfisher (> 3.0) - - ImageSlideshow/SDWebImage (1.6.0): + - ImageSlideshow/SDWebImage (1.7.0): - ImageSlideshow/Core - SDWebImage (< 5.0, >= 3.7) - - Kingfisher (4.10.0) - - SDWebImage (4.4.2): - - SDWebImage/Core (= 4.4.2) - - SDWebImage/Core (4.4.2) + - Kingfisher (4.10.1) + - SDWebImage (4.4.6): + - SDWebImage/Core (= 4.4.6) + - SDWebImage/Core (4.4.6) DEPENDENCIES: - ImageSlideshow (from `../`) @@ -58,12 +58,12 @@ EXTERNAL SOURCES: SPEC CHECKSUMS: AFNetworking: b6f891fdfaed196b46c7a83cf209e09697b94057 - Alamofire: c7287b6e5d7da964a70935e5db17046b7fde6568 - AlamofireImage: 78d67ccbb763d87ba44b21583d2153500a195630 - ImageSlideshow: 17a44fe50c43779149f83c3e369a3d9701f06d65 - Kingfisher: 43c4b802d8b5256cf1f4379e9cd10b329be6d3e2 - SDWebImage: 624d6e296c69b244bcede364c72ae0430ac14681 + Alamofire: 16ce2c353fb72865124ddae8a57c5942388f4f11 + AlamofireImage: 1aea346f4dda2f6c67622fa5a89fcbb80d79cc16 + ImageSlideshow: f8eec5e37a980f60923b585ff23b0e140fd24018 + Kingfisher: c148cd7b47ebde9989f6bc7c27dcaa79d81279a0 + SDWebImage: 3f3f0c02f09798048c47a5ed0a13f17b063572d8 PODFILE CHECKSUM: 9f5f0235fb1728554054ee3ff7128ff5d4729418 -COCOAPODS: 1.5.3 +COCOAPODS: 1.6.1 diff --git a/ImageSlideshow.podspec b/ImageSlideshow.podspec index e015ab84..9c75a3b0 100644 --- a/ImageSlideshow.podspec +++ b/ImageSlideshow.podspec @@ -28,7 +28,7 @@ Image slideshow is a Swift library providing customizable image slideshow with c s.social_media_url = 'https://twitter.com/zvonicek' s.swift_version = '4.2' - s.platform = :ios, '8.0' + s.platform = :ios, '11.0' s.requires_arc = true s.subspec 'Core' do |core| diff --git a/ImageSlideshow/Classes/Core/FullScreenSlideshowViewController.swift b/ImageSlideshow/Classes/Core/FullScreenSlideshowViewController.swift index d20448ff..e5c50c5f 100644 --- a/ImageSlideshow/Classes/Core/FullScreenSlideshowViewController.swift +++ b/ImageSlideshow/Classes/Core/FullScreenSlideshowViewController.swift @@ -18,7 +18,9 @@ open class FullScreenSlideshowViewController: UIViewController { // turns off the timer slideshow.slideshowInterval = 0 slideshow.autoresizingMask = [UIViewAutoresizing.flexibleWidth, UIViewAutoresizing.flexibleHeight] - + slideshow.didTap = { + print("Tapped") + } return slideshow }() @@ -46,7 +48,7 @@ open class FullScreenSlideshowViewController: UIViewController { slideshow.zoomEnabled = zoomEnabled } } - + fileprivate var isInit = true override open func viewDidLoad() { @@ -101,7 +103,7 @@ open class FullScreenSlideshowViewController: UIViewController { slideshow.frame = view.frame } - @objc func close() { + @objc open func close() { // if pageSelected closure set, send call it with current page if let pageSelected = pageSelected { pageSelected(slideshow.currentPage) diff --git a/ImageSlideshow/Classes/Core/ImageSlideshow.swift b/ImageSlideshow/Classes/Core/ImageSlideshow.swift index 27e57386..a89041b5 100644 --- a/ImageSlideshow/Classes/Core/ImageSlideshow.swift +++ b/ImageSlideshow/Classes/Core/ImageSlideshow.swift @@ -58,6 +58,9 @@ open class ImageSlideshow: UIView { /// Scroll View to wrap the slideshow public let scrollView = UIScrollView() + /// Provides a handler for tap detection + public var didTap: (() -> Void)? + /// Page Control shown in the slideshow @available(*, deprecated, message: "Use pageIndicator.view instead") open var pageControl: UIPageControl { @@ -66,6 +69,8 @@ open class ImageSlideshow: UIView { } fatalError("pageIndicator is not an instance of UIPageControl") } + + open var singleTap: UITapGestureRecognizer? = nil /// Activity indicator shown when loading image open var activityIndicator: ActivityIndicatorFactory? { @@ -214,6 +219,12 @@ open class ImageSlideshow: UIView { return scrollView.frame.size.width > 0 ? Int(scrollView.contentOffset.x + scrollView.frame.size.width / 2) / Int(scrollView.frame.size.width) : 0 } + // MARK: - Handlers + + @objc func tapped(sender: Any) { + didTap?() + } + // MARK: - Life cycle override public init(frame: CGRect) { @@ -247,6 +258,14 @@ open class ImageSlideshow: UIView { } addSubview(scrollView) + singleTap = UITapGestureRecognizer(target: self, action: #selector(ImageSlideshow.tapped(sender:))) + singleTap?.numberOfTapsRequired = 1 + singleTap?.isEnabled = true; + singleTap?.cancelsTouchesInView = true + if let singleTap = singleTap { + scrollView.addGestureRecognizer(singleTap) + } + if let pageIndicator = pageIndicator { addSubview(pageIndicator.view) } @@ -317,6 +336,9 @@ open class ImageSlideshow: UIView { var i = 0 for image in scrollViewImages { let item = ImageSlideshowItem(image: image, zoomEnabled: zoomEnabled, activityIndicator: activityIndicator?.create(), maximumScale: maximumScale) + if let gestureRecognizer = item.gestureRecognizer { + singleTap?.require(toFail: gestureRecognizer) + } item.imageView.contentMode = contentScaleMode slideshowItems.append(item) scrollView.addSubview(item)