Abandonded: separate window pattern

Hiding the old window, caused keyboard to resign first responder.
pull/1/head
Michael Kirk 7 years ago committed by Michael Kirk
parent 6037a440c9
commit aa98963fd9

@ -420,7 +420,7 @@
4C20B2B920CA10DE001BAC90 /* ConversationSearchViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C20B2B820CA10DE001BAC90 /* ConversationSearchViewController.swift */; }; 4C20B2B920CA10DE001BAC90 /* ConversationSearchViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C20B2B820CA10DE001BAC90 /* ConversationSearchViewController.swift */; };
4C4AEC4520EC343B0020E72B /* DismissableTextField.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C4AEC4420EC343B0020E72B /* DismissableTextField.swift */; }; 4C4AEC4520EC343B0020E72B /* DismissableTextField.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C4AEC4420EC343B0020E72B /* DismissableTextField.swift */; };
4CC0B59C20EC5F2E00CF6EE0 /* ConversationConfigurationSyncOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CC0B59B20EC5F2E00CF6EE0 /* ConversationConfigurationSyncOperation.swift */; }; 4CC0B59C20EC5F2E00CF6EE0 /* ConversationConfigurationSyncOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CC0B59B20EC5F2E00CF6EE0 /* ConversationConfigurationSyncOperation.swift */; };
4CFF4C0A20F55BBA005DA313 /* MessageActionsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CFF4C0920F55BBA005DA313 /* MessageActionsViewController.swift */; }; 4CFF4C0B20F56104005DA313 /* MessageActionsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CFF4C0920F55BBA005DA313 /* MessageActionsViewController.swift */; };
70377AAB1918450100CAF501 /* MobileCoreServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 70377AAA1918450100CAF501 /* MobileCoreServices.framework */; }; 70377AAB1918450100CAF501 /* MobileCoreServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 70377AAA1918450100CAF501 /* MobileCoreServices.framework */; };
768A1A2B17FC9CD300E00ED8 /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 768A1A2A17FC9CD300E00ED8 /* libz.dylib */; }; 768A1A2B17FC9CD300E00ED8 /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 768A1A2A17FC9CD300E00ED8 /* libz.dylib */; };
76C87F19181EFCE600C4ACAB /* MediaPlayer.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 76C87F18181EFCE600C4ACAB /* MediaPlayer.framework */; }; 76C87F19181EFCE600C4ACAB /* MediaPlayer.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 76C87F18181EFCE600C4ACAB /* MediaPlayer.framework */; };
@ -1691,7 +1691,6 @@
452EC6DE205E9E30000E787C /* MediaGalleryViewController.swift */, 452EC6DE205E9E30000E787C /* MediaGalleryViewController.swift */,
45F32C1D205718B000A300D5 /* MediaPageViewController.swift */, 45F32C1D205718B000A300D5 /* MediaPageViewController.swift */,
454A84032059C787008B8C75 /* MediaTileViewController.swift */, 454A84032059C787008B8C75 /* MediaTileViewController.swift */,
4CFF4C0920F55BBA005DA313 /* MessageActionsViewController.swift */,
34CA1C261F7156F300E51C51 /* MessageDetailViewController.swift */, 34CA1C261F7156F300E51C51 /* MessageDetailViewController.swift */,
34B3F84F1E8DF1700035BE1A /* NewContactThreadViewController.h */, 34B3F84F1E8DF1700035BE1A /* NewContactThreadViewController.h */,
34B3F8501E8DF1700035BE1A /* NewContactThreadViewController.m */, 34B3F8501E8DF1700035BE1A /* NewContactThreadViewController.m */,
@ -1851,7 +1850,6 @@
450DF2061E0DD28D003D14BE /* UserInterface */ = { 450DF2061E0DD28D003D14BE /* UserInterface */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
4541B719209D2D860008608F /* ViewModels */,
450DF2071E0DD29E003D14BE /* Notifications */, 450DF2071E0DD29E003D14BE /* Notifications */,
34FD936E1E3BD43A00109093 /* OWSAnyTouchGestureRecognizer.h */, 34FD936E1E3BD43A00109093 /* OWSAnyTouchGestureRecognizer.h */,
34FD936F1E3BD43A00109093 /* OWSAnyTouchGestureRecognizer.m */, 34FD936F1E3BD43A00109093 /* OWSAnyTouchGestureRecognizer.m */,
@ -1890,6 +1888,7 @@
34B3F89E1E8DF5490035BE1A /* OWSTableViewController.m */, 34B3F89E1E8DF5490035BE1A /* OWSTableViewController.m */,
34D99C8A1F27B13B00D284D6 /* OWSViewController.h */, 34D99C8A1F27B13B00D284D6 /* OWSViewController.h */,
34D99C8B1F27B13B00D284D6 /* OWSViewController.m */, 34D99C8B1F27B13B00D284D6 /* OWSViewController.m */,
4CFF4C0920F55BBA005DA313 /* MessageActionsViewController.swift */,
45A60E7220AC674100FB1ABF /* ReturnToCallViewController.swift */, 45A60E7220AC674100FB1ABF /* ReturnToCallViewController.swift */,
); );
path = ViewControllers; path = ViewControllers;
@ -1934,13 +1933,6 @@
path = SignalMessaging; path = SignalMessaging;
sourceTree = "<group>"; sourceTree = "<group>";
}; };
4541B719209D2D860008608F /* ViewModels */ = {
isa = PBXGroup;
children = (
);
path = ViewModels;
sourceTree = "<group>";
};
4541B71C209D3B4F0008608F /* ViewModels */ = { 4541B71C209D3B4F0008608F /* ViewModels */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
@ -3137,6 +3129,7 @@
344D6CEC20069E070042AF96 /* NewNonContactConversationViewController.m in Sources */, 344D6CEC20069E070042AF96 /* NewNonContactConversationViewController.m in Sources */,
346129FB1FD5F31400532771 /* OWS101ExistingUsersBlockOnIdentityChange.m in Sources */, 346129FB1FD5F31400532771 /* OWS101ExistingUsersBlockOnIdentityChange.m in Sources */,
344F248D2007CCD600CFB4F4 /* DisplayableText.swift in Sources */, 344F248D2007CCD600CFB4F4 /* DisplayableText.swift in Sources */,
4CFF4C0B20F56104005DA313 /* MessageActionsViewController.swift in Sources */,
450998651FD8A34D00D89EB3 /* DeviceSleepManager.swift in Sources */, 450998651FD8A34D00D89EB3 /* DeviceSleepManager.swift in Sources */,
3466087220E550F400AFFE73 /* ConversationStyle.swift in Sources */, 3466087220E550F400AFFE73 /* ConversationStyle.swift in Sources */,
3478506B1FD9B78A007B8332 /* NoopCallMessageHandler.swift in Sources */, 3478506B1FD9B78A007B8332 /* NoopCallMessageHandler.swift in Sources */,
@ -3249,7 +3242,6 @@
4585C4681ED8F8D200896AEA /* SafetyNumberConfirmationAlert.swift in Sources */, 4585C4681ED8F8D200896AEA /* SafetyNumberConfirmationAlert.swift in Sources */,
4C20B2B920CA10DE001BAC90 /* ConversationSearchViewController.swift in Sources */, 4C20B2B920CA10DE001BAC90 /* ConversationSearchViewController.swift in Sources */,
450D19131F85236600970622 /* RemoteVideoView.m in Sources */, 450D19131F85236600970622 /* RemoteVideoView.m in Sources */,
4CFF4C0A20F55BBA005DA313 /* MessageActionsViewController.swift in Sources */,
B6B9ECFC198B31BA00C620D3 /* PushManager.m in Sources */, B6B9ECFC198B31BA00C620D3 /* PushManager.m in Sources */,
34386A54207D271D009F5D9C /* NeverClearView.swift in Sources */, 34386A54207D271D009F5D9C /* NeverClearView.swift in Sources */,
45DF5DF21DDB843F00C936C7 /* CompareSafetyNumbersActivity.swift in Sources */, 45DF5DF21DDB843F00C936C7 /* CompareSafetyNumbersActivity.swift in Sources */,

@ -1982,7 +1982,7 @@ typedef enum : NSUInteger {
- (void)conversationCellDidLongpressText:(ConversationViewCell *)cell viewItem:(ConversationViewItem *)viewItem - (void)conversationCellDidLongpressText:(ConversationViewCell *)cell viewItem:(ConversationViewItem *)viewItem
{ {
UIViewController *messageActionsViewController = [MessageActionsViewController new]; MessageActionsViewController *messageActionsViewController = [MessageActionsViewController new];
[[OWSWindowManager sharedManager] presentMessageActions:messageActionsViewController]; [[OWSWindowManager sharedManager] presentMessageActions:messageActionsViewController];
} }

@ -1,14 +0,0 @@
//
// Copyright (c) 2018 Open Whisper Systems. All rights reserved.
//
import Foundation
@objc
class MessageActionsViewController: UIViewController {
override func loadView() {
self.view = UIView()
view.backgroundColor = .purple
}
}

@ -0,0 +1,25 @@
//
// Copyright (c) 2018 Open Whisper Systems. All rights reserved.
//
import Foundation
@objc
class MessageActionsViewController: UIViewController {
@objc
weak var delegate: MessageActionsDelegate?
override func loadView() {
self.view = UIView()
view.backgroundColor = .purple
let tapGesture = UITapGestureRecognizer(target: self, action: #selector(didTapBackground))
self.view.addGestureRecognizer(tapGesture)
}
@objc
func didTapBackground() {
self.delegate?.dismissMessageActions(self)
}
}

@ -4,6 +4,8 @@
NS_ASSUME_NONNULL_BEGIN NS_ASSUME_NONNULL_BEGIN
@class MessageActionsViewController;
// This VC can become first responder // This VC can become first responder
// when presented to ensure that the input accessory is updated. // when presented to ensure that the input accessory is updated.
@interface OWSWindowRootViewController : UIViewController @interface OWSWindowRootViewController : UIViewController
@ -12,12 +14,20 @@ NS_ASSUME_NONNULL_BEGIN
#pragma mark - #pragma mark -
@protocol MessageActionsDelegate
- (void)dismissMessageActions:(MessageActionsViewController *)messageActionsViewController;
@end
#pragma mark -
extern NSString *const OWSWindowManagerCallDidChangeNotification; extern NSString *const OWSWindowManagerCallDidChangeNotification;
const CGFloat OWSWindowManagerCallScreenHeight(void); const CGFloat OWSWindowManagerCallScreenHeight(void);
extern const UIWindowLevel UIWindowLevel_Background; extern const UIWindowLevel UIWindowLevel_Background;
@interface OWSWindowManager : NSObject @interface OWSWindowManager : NSObject <MessageActionsDelegate>
- (instancetype)init NS_UNAVAILABLE; - (instancetype)init NS_UNAVAILABLE;
@ -29,7 +39,7 @@ extern const UIWindowLevel UIWindowLevel_Background;
#pragma mark - Message Actions #pragma mark - Message Actions
- (void)presentMessageActions:(UIViewController *)messageActionsViewController; - (void)presentMessageActions:(MessageActionsViewController *)messageActionsViewController;
#pragma mark - Calls #pragma mark - Calls

@ -12,7 +12,6 @@ NS_ASSUME_NONNULL_BEGIN
NSString *const OWSWindowManagerCallDidChangeNotification = @"OWSWindowManagerCallDidChangeNotification"; NSString *const OWSWindowManagerCallDidChangeNotification = @"OWSWindowManagerCallDidChangeNotification";
const CGFloat OWSWindowManagerCallScreenHeight(void) const CGFloat OWSWindowManagerCallScreenHeight(void)
{ {
if ([UIDevice currentDevice].isIPhoneX) { if ([UIDevice currentDevice].isIPhoneX) {
@ -235,17 +234,21 @@ const UIWindowLevel UIWindowLevel_MessageActions(void)
[self ensureWindowState]; [self ensureWindowState];
} }
#pragma mark - Calls #pragma mark - Message Actions
- (void)presentMessageActions:(UIViewController *)messageActionsViewController - (void)presentMessageActions:(MessageActionsViewController *)messageActionsViewController
{ {
messageActionsViewController.delegate = self;
self.messageActionsViewController = messageActionsViewController; self.messageActionsViewController = messageActionsViewController;
self.messageActionsWindow.rootViewController = messageActionsViewController; self.messageActionsWindow.rootViewController = messageActionsViewController;
[self ensureWindowState]; [self ensureWindowState];
} }
- (void)dismissMessageActions - (void)dismissMessageActions:(UIViewController *)messageActionsViewController
{ {
OWSAssert(self.messageActionsViewController == messageActionsViewController);
self.messageActionsWindow.rootViewController = nil; self.messageActionsWindow.rootViewController = nil;
self.messageActionsViewController = nil; self.messageActionsViewController = nil;
@ -372,6 +375,7 @@ const UIWindowLevel UIWindowLevel_MessageActions(void)
[self ensureMessageActionsWindowHidden]; [self ensureMessageActionsWindowHidden];
[self ensureScreenBlockWindowHidden]; [self ensureScreenBlockWindowHidden];
} else if (self.messageActionsViewController) { } else if (self.messageActionsViewController) {
// Show Message Actions
[self ensureRootWindowHidden]; [self ensureRootWindowHidden];
[self ensureReturnToCallWindowHidden]; [self ensureReturnToCallWindowHidden];

Loading…
Cancel
Save