From d93ae3ce89b7db9f9176ef8fe2373c68920055a4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jesu=CC=81s=20A=2E=20A=CC=81lvarez?= Date: Thu, 26 May 2022 17:42:45 +0200 Subject: [PATCH] use default modal presentation transition for settings and disks getting it right on iPad and iPhone seems too much of a hack --- Mini vMac/Base.lproj/Main.storyboard | 61 +++++++++++++++++----------- Mini vMac/ViewController.m | 50 +++-------------------- 2 files changed, 42 insertions(+), 69 deletions(-) diff --git a/Mini vMac/Base.lproj/Main.storyboard b/Mini vMac/Base.lproj/Main.storyboard index a1cc6da..8870893 100644 --- a/Mini vMac/Base.lproj/Main.storyboard +++ b/Mini vMac/Base.lproj/Main.storyboard @@ -1,9 +1,10 @@ - + - + + @@ -48,7 +49,7 @@ - + @@ -56,7 +57,7 @@ - + @@ -64,7 +65,7 @@ - + @@ -72,14 +73,14 @@ - + @@ -219,10 +220,10 @@ - + - + @@ -252,7 +253,7 @@ - + @@ -281,7 +282,7 @@ - + @@ -297,7 +298,7 @@ - + @@ -313,7 +314,7 @@ - + @@ -321,7 +322,7 @@ - + @@ -347,7 +348,7 @@ - + @@ -363,14 +364,14 @@ - + - + @@ -452,10 +453,10 @@ - + - + @@ -471,12 +472,12 @@ - + - + @@ -534,5 +535,17 @@ + + + + + + + + + + + + diff --git a/Mini vMac/ViewController.m b/Mini vMac/ViewController.m index f9e2215..f4a1384 100644 --- a/Mini vMac/ViewController.m +++ b/Mini vMac/ViewController.m @@ -13,7 +13,7 @@ #import "KBKeyboardView.h" #import "KBKeyboardLayout.h" -@interface ViewController () +@interface ViewController () @end @@ -29,7 +29,6 @@ API_AVAILABLE(ios(13.4)) KBKeyboardView *keyboardView; UISwipeGestureRecognizer *showKeyboardGesture, *hideKeyboardGesture, *insertDiskGesture, *showSettingsGesture; UIControl *pointingDeviceView; - UISwipeGestureRecognizerDirection modalPanePresentationDirection; id interaction; } @@ -70,53 +69,14 @@ API_AVAILABLE(ios(13.4)) - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { [self cancelHelpPresentation]; - if ([sender isKindOfClass:[UIGestureRecognizer class]]) { - UISwipeGestureRecognizer *gestureRecognizer = (UISwipeGestureRecognizer*)sender; - modalPanePresentationDirection = gestureRecognizer.direction; - segue.destinationViewController.transitioningDelegate = self; + if ([@[@"disk", @"settings"] containsObject:segue.identifier]) { segue.destinationViewController.presentationController.delegate = self; - } else if (self.presentedViewController != nil && [@[@"disk", @"settings"] containsObject:segue.identifier]) { - [self dismissViewControllerAnimated:YES completion:nil]; + if (self.presentedViewController != nil) { + [self dismissViewControllerAnimated:YES completion:nil]; + } } } -- (id)animationControllerForPresentedController:(UIViewController *)presented presentingController:(UIViewController *)presenting sourceController:(UIViewController *)source { - return self; -} - -- (NSTimeInterval)transitionDuration:(id)transitionContext { - return 0.3; -} - -- (void)animateTransition:(id)transitionContext { - UIView *containerView = [transitionContext containerView]; - UIView *toView = [transitionContext viewForKey:UITransitionContextToViewKey]; - - [containerView addSubview:toView]; - switch (modalPanePresentationDirection) { - case UISwipeGestureRecognizerDirectionLeft: - toView.transform = CGAffineTransformMakeTranslation(containerView.bounds.size.width, 0); - break; - case UISwipeGestureRecognizerDirectionRight: - toView.transform = CGAffineTransformMakeTranslation(-containerView.bounds.size.width, 0); - break; - case UISwipeGestureRecognizerDirectionDown: - toView.transform = CGAffineTransformMakeTranslation(0, -containerView.bounds.size.height); - break; - case UISwipeGestureRecognizerDirectionUp: - toView.transform = CGAffineTransformMakeTranslation(0, containerView.bounds.size.height); - break; - default: - break; - } - - [UIView animateWithDuration:[self transitionDuration:transitionContext] animations:^{ - toView.transform = CGAffineTransformIdentity; - } completion:^(BOOL finished) { - [transitionContext completeTransition:finished]; - }]; -} - - (void)presentationControllerDidDismiss:(UIPresentationController *)presentationController { // hack to fix the presenting view controller not returning back to normal size on iOS 13 // when the sheet is dismissed interactively (ie dragging it down) after a contextual menu