@@ -22,8 +22,11 @@ public final class TimelinePagerView: UIView, UIGestureRecognizerDelegate, UIScr
2222
2323 public var calendar : Calendar = Calendar . autoupdatingCurrent {
2424 didSet {
25- pagingViewController. viewControllers? . forEach {
25+ // changing timezone in loaded pages
26+ pagingViewController. children. forEach {
2627 let vc = $0 as! TimelineContainerController
28+ let oldCalendar = vc. timeline. calendar
29+ vc. timeline. date = vc. timeline. date. dateOnly ( calendar: calendar, oldCalendar: oldCalendar)
2730 vc. timeline. calendar = calendar
2831 }
2932 }
@@ -180,7 +183,11 @@ public final class TimelinePagerView: UIView, UIGestureRecognizerDelegate, UIScr
180183
181184 private func updateTimeline( _ timeline: TimelineView ) {
182185 guard let dataSource = dataSource else { return }
183- let date = timeline. date. dateOnly ( calendar: calendar)
186+ // I don't know under what circumstances, but I know for sure that
187+ // a situation is possible when these calendars have different time
188+ // zones. It is in this case that the call below will prevent a bug
189+ // that leads to "jumps" after days when you swipe to the left
190+ let date = timeline. date. dateOnly ( calendar: calendar, oldCalendar: timeline. calendar)
184191 let events = dataSource. eventsForDate ( date)
185192 let day = TimePeriod ( beginning: date,
186193 chunk: TimeChunk . dateComponents ( days: 1 ) )
@@ -444,7 +451,7 @@ public final class TimelinePagerView: UIView, UIGestureRecognizerDelegate, UIScr
444451 // MARK: UIPageViewControllerDataSource
445452
446453 public func pageViewController( _ pageViewController: UIPageViewController , viewControllerBefore viewController: UIViewController ) -> UIViewController ? {
447- guard let containerController = viewController as? TimelineContainerController else { return nil }
454+ guard let containerController = viewController as? TimelineContainerController else { return nil }
448455 let previousDate = containerController. timeline. date. add ( TimeChunk . dateComponents ( days: - 1 ) , calendar: calendar)
449456 let vc = configureTimelineController ( date: previousDate)
450457 let offset = ( pageViewController. viewControllers? . first as? TimelineContainerController ) ? . container. contentOffset
@@ -453,7 +460,7 @@ public final class TimelinePagerView: UIView, UIGestureRecognizerDelegate, UIScr
453460 }
454461
455462 public func pageViewController( _ pageViewController: UIPageViewController , viewControllerAfter viewController: UIViewController ) -> UIViewController ? {
456- guard let containerController = viewController as? TimelineContainerController else { return nil }
463+ guard let containerController = viewController as? TimelineContainerController else { return nil }
457464 let nextDate = containerController. timeline. date. add ( TimeChunk . dateComponents ( days: 1 ) , calendar: calendar)
458465 let vc = configureTimelineController ( date: nextDate)
459466 let offset = ( pageViewController. viewControllers? . first as? TimelineContainerController ) ? . container. contentOffset
@@ -466,7 +473,19 @@ public final class TimelinePagerView: UIView, UIGestureRecognizerDelegate, UIScr
466473 public func pageViewController( _ pageViewController: UIPageViewController , didFinishAnimating finished: Bool , previousViewControllers: [ UIViewController ] , transitionCompleted completed: Bool ) {
467474 guard completed else { return }
468475 if let timelineContainerController = pageViewController. viewControllers? . first as? TimelineContainerController {
469- let selectedDate = timelineContainerController. timeline. date
476+ // Unfortunately, I cannot explain this change in detail. I fiddled
477+ // with a bug in which some days were skipped when swiping, completely
478+ // desperate and wrote this. To my surprise, this solved the problem.
479+ // I'll do some research on the reasons later.
480+
481+ // Попытка пофиксить сбой хедера с перескоком через число
482+ var selectedDate = timelineContainerController. timeline. date
483+ selectedDate = selectedDate. dateOnly ( calendar: self . state!. calendar, oldCalendar: timelineContainerController. container. timeline. calendar)
484+
485+ // попытка пофиксить баг с уменьшением и свайпом
486+ timelineContainerController. timeline. date = selectedDate // Я хз как и какие последствия оно имеет, но это сработало
487+ timelineContainerController. timeline. calendar = self . state!. calendar
488+
470489 delegate? . timelinePager ( timelinePager: self , willMoveTo: selectedDate)
471490 state? . client ( client: self , didMoveTo: selectedDate)
472491 scrollToFirstEventIfNeeded ( )
0 commit comments