diff --git a/Tusker.xcodeproj/project.pbxproj b/Tusker.xcodeproj/project.pbxproj index 2d9893c7..e2f7db91 100644 --- a/Tusker.xcodeproj/project.pbxproj +++ b/Tusker.xcodeproj/project.pbxproj @@ -223,6 +223,7 @@ D6D4DDF0212518A200E1C4BB /* TuskerUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = D6D4DDEF212518A200E1C4BB /* TuskerUITests.swift */; }; D6DD353D22F28CD000A9563A /* ContentWarningCopyMode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D6DD353C22F28CD000A9563A /* ContentWarningCopyMode.swift */; }; D6DD353F22F502EC00A9563A /* Preferences+Notification.swift in Sources */ = {isa = PBXBuildFile; fileRef = D6DD353E22F502EC00A9563A /* Preferences+Notification.swift */; }; + D6DFC69E242C490400ACC392 /* TrackpadScrollGestureRecognizer.swift in Sources */ = {isa = PBXBuildFile; fileRef = D6DFC69D242C490400ACC392 /* TrackpadScrollGestureRecognizer.swift */; }; D6E0DC8E216EDF1E00369478 /* Previewing.swift in Sources */ = {isa = PBXBuildFile; fileRef = D6E0DC8D216EDF1E00369478 /* Previewing.swift */; }; D6E6F26321603F8B006A8599 /* CharacterCounter.swift in Sources */ = {isa = PBXBuildFile; fileRef = D6E6F26221603F8B006A8599 /* CharacterCounter.swift */; }; D6E6F26521604242006A8599 /* CharacterCounterTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = D6E6F26421604242006A8599 /* CharacterCounterTests.swift */; }; @@ -510,6 +511,7 @@ D6D4DDF1212518A200E1C4BB /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; D6DD353C22F28CD000A9563A /* ContentWarningCopyMode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentWarningCopyMode.swift; sourceTree = ""; }; D6DD353E22F502EC00A9563A /* Preferences+Notification.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Preferences+Notification.swift"; sourceTree = ""; }; + D6DFC69D242C490400ACC392 /* TrackpadScrollGestureRecognizer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TrackpadScrollGestureRecognizer.swift; sourceTree = ""; }; D6E0DC8D216EDF1E00369478 /* Previewing.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Previewing.swift; sourceTree = ""; }; D6E6F26221603F8B006A8599 /* CharacterCounter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CharacterCounter.swift; sourceTree = ""; }; D6E6F26421604242006A8599 /* CharacterCounterTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CharacterCounterTests.swift; sourceTree = ""; }; @@ -1159,6 +1161,7 @@ D68FEC4E232C5BC300C84F23 /* SegmentedPageViewController.swift */, D693DE5623FE1A6A0061E07D /* EnhancedNavigationViewController.swift */, D693DE5823FE24300061E07D /* InteractivePushTransition.swift */, + D6DFC69D242C490400ACC392 /* TrackpadScrollGestureRecognizer.swift */, ); path = Utilities; sourceTree = ""; @@ -1689,6 +1692,7 @@ D627943523A5525100D38C68 /* StatusActivity.swift in Sources */, D663626C21361C6700C9CBA2 /* Account+Preferences.swift in Sources */, D6333B372137838300CE884A /* AttributedString+Helpers.swift in Sources */, + D6DFC69E242C490400ACC392 /* TrackpadScrollGestureRecognizer.swift in Sources */, D61AC1D8232EA42D00C54D2D /* InstanceTableViewCell.swift in Sources */, D63F9C68241C4F79004C03CF /* AddAttachmentTableViewCell.swift in Sources */, D6B8DB342182A59300424AF7 /* UIAlertController+Visibility.swift in Sources */, diff --git a/Tusker/Screens/Utilities/InteractivePushTransition.swift b/Tusker/Screens/Utilities/InteractivePushTransition.swift index 0a90c9a2..dfbb37df 100644 --- a/Tusker/Screens/Utilities/InteractivePushTransition.swift +++ b/Tusker/Screens/Utilities/InteractivePushTransition.swift @@ -35,6 +35,12 @@ class InteractivePushTransition: UIPercentDrivenInteractiveTransition { interactivePushGestureRecognizer.edges = .right interactivePushGestureRecognizer.require(toFail: navigationController.interactivePopGestureRecognizer!) navigationController.view.addGestureRecognizer(interactivePushGestureRecognizer) + + if #available(iOS 13.4, *) { + let trackpadGestureRecognizer = TrackpadScrollGestureRecognizer(target: self, action: #selector(handleSwipeForward(_:))) + trackpadGestureRecognizer.require(toFail: navigationController.interactivePopGestureRecognizer!) + navigationController.view.addGestureRecognizer(trackpadGestureRecognizer) + } } @objc func handleSwipeForward(_ recognizer: UIPanGestureRecognizer) { diff --git a/Tusker/Screens/Utilities/TrackpadScrollGestureRecognizer.swift b/Tusker/Screens/Utilities/TrackpadScrollGestureRecognizer.swift new file mode 100644 index 00000000..285474d2 --- /dev/null +++ b/Tusker/Screens/Utilities/TrackpadScrollGestureRecognizer.swift @@ -0,0 +1,24 @@ +// +// TrackpadScreenEdgePanScrollGestureRecognizer.swift +// Tusker +// +// Created by Shadowfacts on 3/25/20. +// Copyright © 2020 Shadowfacts. All rights reserved. +// + +import UIKit + +@available(iOS 13.4, *) +class TrackpadScrollGestureRecognizer: UIPanGestureRecognizer { + + override init(target: Any?, action: Selector?) { + super.init(target: target, action: action) + + self.allowedScrollTypesMask = .all + } + + override func shouldReceive(_ event: UIEvent) -> Bool { + return event.type == .scroll + } + +}