remove interactive 'swipe for info'

pull/1/head
Michael Kirk 7 years ago
parent 57c4d97093
commit 2d4eb7d057

@ -300,7 +300,6 @@
452037D11EE84975004E4CDF /* DebugUISessionState.m in Sources */ = {isa = PBXBuildFile; fileRef = 452037D01EE84975004E4CDF /* DebugUISessionState.m */; };
4520D8D51D417D8E00123472 /* Photos.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4520D8D41D417D8E00123472 /* Photos.framework */; };
4521C3C01F59F3BA00B4C582 /* TextFieldHelper.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4521C3BF1F59F3BA00B4C582 /* TextFieldHelper.swift */; };
4523149E1F7E916B003A428C /* SlideOffAnimatedTransition.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4523149D1F7E916B003A428C /* SlideOffAnimatedTransition.swift */; };
452314A01F7E9E18003A428C /* DirectionalPanGestureRecognizer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4523149F1F7E9E18003A428C /* DirectionalPanGestureRecognizer.swift */; };
4523D016206EDC2B00A2AB51 /* LRUCache.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4523D015206EDC2B00A2AB51 /* LRUCache.swift */; };
452B999020A34B6B006F2F9E /* AddContactShareToExistingContactViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 452B998F20A34B6B006F2F9E /* AddContactShareToExistingContactViewController.swift */; };
@ -944,7 +943,6 @@
452037D01EE84975004E4CDF /* DebugUISessionState.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DebugUISessionState.m; sourceTree = "<group>"; };
4520D8D41D417D8E00123472 /* Photos.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Photos.framework; path = System/Library/Frameworks/Photos.framework; sourceTree = SDKROOT; };
4521C3BF1F59F3BA00B4C582 /* TextFieldHelper.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TextFieldHelper.swift; sourceTree = "<group>"; };
4523149D1F7E916B003A428C /* SlideOffAnimatedTransition.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = SlideOffAnimatedTransition.swift; path = UserInterface/SlideOffAnimatedTransition.swift; sourceTree = "<group>"; };
4523149F1F7E9E18003A428C /* DirectionalPanGestureRecognizer.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DirectionalPanGestureRecognizer.swift; sourceTree = "<group>"; };
4523D015206EDC2B00A2AB51 /* LRUCache.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LRUCache.swift; sourceTree = "<group>"; };
452B998F20A34B6B006F2F9E /* AddContactShareToExistingContactViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AddContactShareToExistingContactViewController.swift; sourceTree = "<group>"; };
@ -1859,7 +1857,6 @@
450DF2071E0DD29E003D14BE /* Notifications */,
34FD936E1E3BD43A00109093 /* OWSAnyTouchGestureRecognizer.h */,
34FD936F1E3BD43A00109093 /* OWSAnyTouchGestureRecognizer.m */,
4523149D1F7E916B003A428C /* SlideOffAnimatedTransition.swift */,
34B3F8331E8DF1700035BE1A /* ViewControllers */,
76EB052B18170B33006006FC /* Views */,
);
@ -3331,7 +3328,6 @@
4539B5861F79348F007141FF /* PushRegistrationManager.swift in Sources */,
45FBC5D11DF8592E00E9B410 /* SignalCall.swift in Sources */,
340FC8BB204DAC8D007AEB0F /* OWSAddToContactViewController.m in Sources */,
4523149E1F7E916B003A428C /* SlideOffAnimatedTransition.swift in Sources */,
340FC8C0204DB7D2007AEB0F /* OWSBackupExportJob.m in Sources */,
45F32C232057297A00A300D5 /* MediaPageViewController.swift in Sources */,
3466087420E5649700AFFE73 /* OWSLayerView.swift in Sources */,

@ -1,52 +0,0 @@
//
// Copyright (c) 2018 Open Whisper Systems. All rights reserved.
//
import UIKit
import SignalMessaging
@objc
class SlideOffAnimatedTransition: NSObject, UIViewControllerAnimatedTransitioning {
func animateTransition(using transitionContext: UIViewControllerContextTransitioning) {
let containerView = transitionContext.containerView
guard let fromView = transitionContext.viewController(forKey: UITransitionContextViewControllerKey.from)?.view else {
owsFail("No fromView")
return
}
guard let toView = transitionContext.viewController(forKey: UITransitionContextViewControllerKey.to)?.view else {
owsFail("No toView")
return
}
let width = containerView.frame.width
let offsetFrame = fromView.frame.offsetBy(dx: (CurrentAppContext().isRTL ? +width : -width), dy: 0)
toView.frame = fromView.frame
fromView.layer.shadowRadius = 15.0
fromView.layer.shadowOpacity = 1.0
toView.layer.opacity = 0.9
containerView.insertSubview(toView, belowSubview: fromView)
UIView.animate(withDuration: transitionDuration(using: transitionContext), delay: 0, options: .curveLinear, animations: {
fromView.frame = offsetFrame
toView.layer.opacity = 1.0
fromView.layer.shadowOpacity = 0.1
}, completion: { _ in
toView.layer.opacity = 1.0
toView.layer.shadowOpacity = 0
fromView.layer.opacity = 1.0
fromView.layer.shadowOpacity = 0
transitionContext.completeTransition(!transitionContext.transitionWasCancelled)
})
}
func transitionDuration(using transitionContext: UIViewControllerContextTransitioning?) -> TimeInterval {
return 0.3
}
}

@ -28,9 +28,6 @@ NS_ASSUME_NONNULL_BEGIN
- (void)conversationCell:(ConversationViewCell *)cell
didLongpressSystemMessageViewItem:(ConversationViewItem *)viewItem;
- (void)didPanWithGestureRecognizer:(UIPanGestureRecognizer *)gestureRecognizer
viewItem:(ConversationViewItem *)conversationItem;
#pragma mark - System Cell
- (void)tappedNonBlockingIdentityChangeForRecipientId:(nullable NSString *)signalId;

@ -70,12 +70,6 @@ NS_ASSUME_NONNULL_BEGIN
UILongPressGestureRecognizer *longPress =
[[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(handleLongPressGesture:)];
[self.contentView addGestureRecognizer:longPress];
PanDirectionGestureRecognizer *panGesture = [[PanDirectionGestureRecognizer alloc]
initWithDirection:(CurrentAppContext().isRTL ? PanDirectionLeft : PanDirectionRight)
target:self
action:@selector(handlePanGesture:)];
[self addGestureRecognizer:panGesture];
}
- (void)dealloc
@ -464,17 +458,6 @@ NS_ASSUME_NONNULL_BEGIN
}
}
- (void)handlePanGesture:(UIPanGestureRecognizer *)panRecognizer
{
OWSAssert(self.delegate);
if ([self isGestureInCellHeader:panRecognizer]) {
return;
}
[self.delegate didPanWithGestureRecognizer:panRecognizer viewItem:self.viewItem];
}
- (BOOL)isGestureInCellHeader:(UIGestureRecognizer *)sender
{
OWSAssert(self.viewItem);

@ -145,10 +145,6 @@ typedef enum : NSUInteger {
ConversationInputToolbarDelegate,
GifPickerViewControllerDelegate>
// Show message info animation
@property (nullable, nonatomic) UIPercentDrivenInteractiveTransition *showMessageDetailsTransition;
@property (nullable, nonatomic) UIPanGestureRecognizer *currentShowMessageDetailsPanGesture;
@property (nonatomic) TSThread *thread;
@property (nonatomic, readonly) YapDatabaseConnection *editingDatabaseConnection;
@property (nonatomic, readonly) AudioActivity *voiceNoteAudioActivity;
@ -5161,110 +5157,6 @@ typedef enum : NSUInteger {
return cell;
}
#pragma mark - swipe to show message details
- (void)didPanWithGestureRecognizer:(UIPanGestureRecognizer *)gestureRecognizer
viewItem:(ConversationViewItem *)conversationItem
{
self.currentShowMessageDetailsPanGesture = gestureRecognizer;
const CGFloat swipeTranslation
= ([gestureRecognizer translationInView:self.view].x * (CurrentAppContext().isRTL ? +1.f : -1.f));
const CGFloat ratioComplete = CGFloatClamp(swipeTranslation / self.view.frame.size.width, 0, 1);
switch (gestureRecognizer.state) {
case UIGestureRecognizerStateBegan: {
TSInteraction *interaction = conversationItem.interaction;
if ([interaction isKindOfClass:[TSIncomingMessage class]] ||
[interaction isKindOfClass:[TSOutgoingMessage class]]) {
// Canary check in case we later have another reason to set navigationController.delegate - we don't
// want to inadvertently clobber it here.
OWSAssert(self.navigationController.delegate == nil);
self.navigationController.delegate = self;
[self showDetailViewForViewItem:conversationItem];
} else {
OWSFail(@"%@ Can't show message metadata for message of type: %@", self.logTag, [interaction class]);
}
break;
}
case UIGestureRecognizerStateChanged: {
UIPercentDrivenInteractiveTransition *transition = self.showMessageDetailsTransition;
if (!transition) {
DDLogVerbose(@"%@ transition not set up yet", self.logTag);
return;
}
[transition updateInteractiveTransition:ratioComplete];
break;
}
case UIGestureRecognizerStateEnded: {
const CGFloat velocity = [gestureRecognizer velocityInView:self.view].x;
UIPercentDrivenInteractiveTransition *transition = self.showMessageDetailsTransition;
if (!transition) {
DDLogVerbose(@"%@ transition not set up yet", self.logTag);
return;
}
// Complete the transition if moved sufficiently far or fast
// Note this is trickier for incoming, since you are already on the left, and have less space.
if (ratioComplete > 0.3 || velocity < -800) {
[transition finishInteractiveTransition];
} else {
[transition cancelInteractiveTransition];
}
break;
}
case UIGestureRecognizerStateCancelled:
case UIGestureRecognizerStateFailed: {
UIPercentDrivenInteractiveTransition *transition = self.showMessageDetailsTransition;
if (!transition) {
DDLogVerbose(@"%@ transition not set up yet", self.logTag);
return;
}
[transition cancelInteractiveTransition];
break;
}
default:
break;
}
}
- (nullable id<UIViewControllerAnimatedTransitioning>)navigationController:
(UINavigationController *)navigationController
animationControllerForOperation:(UINavigationControllerOperation)operation
fromViewController:(UIViewController *)fromVC
toViewController:(UIViewController *)toVC
{
return [SlideOffAnimatedTransition new];
}
- (nullable id<UIViewControllerInteractiveTransitioning>)
navigationController:(UINavigationController *)navigationController
interactionControllerForAnimationController:(id<UIViewControllerAnimatedTransitioning>)animationController
{
// We needed to be the navigation controller delegate to specify the interactive "slide left for message details"
// animation But we may not want to be the navigation controller delegate permanently.
self.navigationController.delegate = nil;
UIPanGestureRecognizer *recognizer = self.currentShowMessageDetailsPanGesture;
if (recognizer == nil) {
// Not in the middle of the `currentShowMessageDetailsPanGesture`, abort.
return nil;
}
if (recognizer.state == UIGestureRecognizerStateBegan) {
self.showMessageDetailsTransition = [UIPercentDrivenInteractiveTransition new];
self.showMessageDetailsTransition.completionCurve = UIViewAnimationCurveEaseOut;
} else {
self.showMessageDetailsTransition = nil;
}
return self.showMessageDetailsTransition;
}
#pragma mark - UICollectionViewDelegate
- (void)collectionView:(UICollectionView *)collectionView

Loading…
Cancel
Save