From 52ae8dd4dc7aa021a39b1b0fccc28eb35c06af63 Mon Sep 17 00:00:00 2001 From: aron1127 Date: Fri, 20 Sep 2019 11:43:30 +0900 Subject: [PATCH] Error : Fix limited scrolling range when dragging --- .DS_Store | Bin 0 -> 6148 bytes JZCalendarWeekView/JZBaseWeekView.swift | 48 +++++++++++++++++++++--- 2 files changed, 42 insertions(+), 6 deletions(-) create mode 100644 .DS_Store diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..72bceadd5b3b1b4cce45b0d78018fd6642fe5b93 GIT binary patch literal 6148 zcmeHK-D(p-6h4!tW|Ja@B2>kTy%D?!rKzp86d|U`MMOp1(tH z%|$y|GIRnF{mmH$ev+=OeP^YG^5TVxVbqM;#o7yN5M@?sr=z58$Ip1{v7HVadxjg=eCyS=01x9`U9Cm%kGnGnOSCG3*I-|z)aL6tXF90pPN z5+j_oO!w(2?Lsx|codQgFQxgRK^ zl|s(z=gfIReUa5e))?NaLf(&sycK#tJnbB zyTDjN);@j-*Du6e2l!1XC3%)ui=SrJ;v(%KJ~< Bool { + guard let scrollDirection = self.scrollDirection, scrollDirection.direction == .horizontal else { return true } + let currentStartDate = getDateForContentOffsetX(collectionView.contentOffset.x) // Left-hand date of the screen you are viewing + let currentEndDate = getDateForContentOffsetX(collectionView.contentOffset.x + contentViewWidth - 1) // The right-hand date of the screen you are viewing + + // Initialize if within the set range left scroll. + if let startDate = self.scrollableRange.startDate { + if startDate.totalDistance(from: currentStartDate, resultIn: .day)! < 0 { + return false + } + } + // Initialize if within the set range right scroll. + if let endDate = self.scrollableRange.endDate { + if endDate.totalDistance(from: currentEndDate, resultIn: .day)! > 0 { + return false + } + } + // return OK set next Range + return true + } } // MARK: - Horizontal scrollable range methods @@ -735,3 +765,9 @@ extension JZBaseWeekView: WeekViewFlowLayoutDelegate { return JZSupplementaryViewKinds.eventCell } } + +extension Date { // Date Comparison + func totalDistance(from date: Date, resultIn component: Calendar.Component) -> Int? { + return Calendar.current.dateComponents([component], from: self, to: date).value(for: component) + } +}