diff --git a/SignalMessaging/ViewControllers/AttachmentApprovalViewController.swift b/SignalMessaging/ViewControllers/AttachmentApprovalViewController.swift index 191dcd61d..14e73e71c 100644 --- a/SignalMessaging/ViewControllers/AttachmentApprovalViewController.swift +++ b/SignalMessaging/ViewControllers/AttachmentApprovalViewController.swift @@ -174,7 +174,8 @@ public class AttachmentApprovalViewController: UIPageViewController, UIPageViewC self.view.backgroundColor = .black - disablePagingIfNecessary() + // avoid an unpleasant "bounce" which doesn't make sense in the context of a single item. + pagerScrollView?.isScrollEnabled = attachmentItems.count > 1 // Bottom Toolbar galleryRailView.delegate = self @@ -395,25 +396,14 @@ public class AttachmentApprovalViewController: UIPageViewController, UIPageViewC button.autoPinEdge(toSuperviewMargin: .trailing) } - var pagerScrollView: UIScrollView? - // This is kind of a hack. Since we don't have first class access to the superview's `scrollView` - // we traverse the view hierarchy until we find it, then disable scrolling if there's only one - // item. This avoids an unpleasant "bounce" which doesn't make sense in the context of a single item. - fileprivate func disablePagingIfNecessary() { - for view in self.view.subviews { - if let pagerScrollView = view as? UIScrollView { - self.pagerScrollView = pagerScrollView - break - } - } + lazy var pagerScrollView: UIScrollView? = { + // This is kind of a hack. Since we don't have first class access to the superview's `scrollView` + // we traverse the view hierarchy until we find it. + let pagerScrollView = view.subviews.first { $0 is UIScrollView } as? UIScrollView + assert(pagerScrollView != nil) - guard let pagerScrollView = self.pagerScrollView else { - owsFailDebug("pagerScrollView was unexpectedly nil") - return - } - - pagerScrollView.isScrollEnabled = attachmentItems.count > 1 - } + return pagerScrollView + }() // MARK: - UIPageViewControllerDelegate @@ -694,7 +684,7 @@ extension AttachmentApprovalViewController: AttachmentPrepViewControllerDelegate } func enablePaging() { - self.pagerScrollView?.panGestureRecognizer.isEnabled = true + pagerScrollView?.panGestureRecognizer.isEnabled = true } }