From aa4da8f74f8cc4951cf6859d8fc3b8a828ce3de0 Mon Sep 17 00:00:00 2001 From: "Pfeil, Scott Robert" Date: Mon, 15 Apr 2019 11:14:29 -0400 Subject: [PATCH] deprecating --- MVMCoreUI/Atoms/Buttons/CaretButton.swift | 4 +- MVMCoreUI/Atoms/Buttons/MFCustomButton.h | 17 +++-- MVMCoreUI/Atoms/Buttons/MFCustomButton.m | 71 ++++++++++++++------ MVMCoreUI/OtherHandlers/DelegateObject.swift | 4 +- 4 files changed, 65 insertions(+), 31 deletions(-) diff --git a/MVMCoreUI/Atoms/Buttons/CaretButton.swift b/MVMCoreUI/Atoms/Buttons/CaretButton.swift index 7d67afb1..72c04900 100644 --- a/MVMCoreUI/Atoms/Buttons/CaretButton.swift +++ b/MVMCoreUI/Atoms/Buttons/CaretButton.swift @@ -106,14 +106,14 @@ open class CaretButton: MFCustomButton { //------------------------------------------------------ // Default values for view. - @objc open override func setAsMolecule() { + @objc open func setAsMolecule() { backgroundColor = .clear setTitleColor(enabledColor, for: .normal) setTitleColor(disabledColor, for: .disabled) } - @objc override open func setWithJSON(_ json: [AnyHashable: Any]?, delegate: NSObject?, additionalData: [AnyHashable: Any]?) { + @objc open func setWithJSON(_ json: [AnyHashable: Any]?, delegate: NSObject?, additionalData: [AnyHashable: Any]?) { setWithActionMap(json, delegate: delegate as? (MVMCoreActionDelegateProtocol & NSObjectProtocol), additionalData: additionalData) guard let dictionary = json else { return } diff --git a/MVMCoreUI/Atoms/Buttons/MFCustomButton.h b/MVMCoreUI/Atoms/Buttons/MFCustomButton.h index 21236e70..47ac89e4 100644 --- a/MVMCoreUI/Atoms/Buttons/MFCustomButton.h +++ b/MVMCoreUI/Atoms/Buttons/MFCustomButton.h @@ -11,14 +11,14 @@ #import #import #import -@import MVMCore.MVMCoreViewProtocol; +@class MVMCoreUIDelegateObject; typedef void (^ButtonTapBlock)(id _Nonnull sender); extern CGFloat const CloseButtonHeight; extern CGFloat const CloseButtonWidth; -@interface MFCustomButton : UIButton +@interface MFCustomButton : UIButton @property (nullable, nonatomic, strong) NSDictionary *actionMap; @property (nullable, nonatomic, weak) id buttonDelegate; @@ -28,14 +28,19 @@ extern CGFloat const CloseButtonWidth; - (void)addBlock:(nonnull ButtonTapBlock)buttonTapBlock forControlEvents:(UIControlEvents)event; // Sets up the button with the passed in action map. Will set the title and set the action to use the action handler. -- (void)setWithActionMap:(nullable NSDictionary *)actionMap delegate:(nullable NSObject *)delegate additionalData:(nullable NSDictionary *)additionalData; - -// Sets up the button with the passed in action map. Will set the title and set the action to use the action handler. Also pass in the button delegate -- (void)setWithActionMap:(nullable NSDictionary *)actionMap actionDelegate:(nullable NSObject *)actionDelegate additionalData:(nullable NSDictionary *)additionalData buttonDelegate:(nullable id )buttonDelegate; +- (void)setWithActionMap:(nullable NSDictionary *)actionMap delegateObject:(nullable MVMCoreUIDelegateObject *)delegateObject additionalData:(nullable NSDictionary *)additionalData; //accessibility - (void)addAccessibilityForCameraControl; - (nonnull UIAccessibilityCustomAction *)accessibilityCustomAction; +#pragma mark - Deprecated + +// Sets up the button with the passed in action map. Will set the title and set the action to use the action handler. +- (void)setWithActionMap:(nullable NSDictionary *)actionMap delegate:(nullable NSObject *)delegate additionalData:(nullable NSDictionary *)additionalData __deprecated; + +// Sets up the button with the passed in action map. Will set the title and set the action to use the action handler. Also pass in the button delegate +- (void)setWithActionMap:(nullable NSDictionary *)actionMap actionDelegate:(nullable NSObject *)actionDelegate additionalData:(nullable NSDictionary *)additionalData buttonDelegate:(nullable id )buttonDelegate __deprecated; + @end diff --git a/MVMCoreUI/Atoms/Buttons/MFCustomButton.m b/MVMCoreUI/Atoms/Buttons/MFCustomButton.m index 0a78856c..45daebcc 100644 --- a/MVMCoreUI/Atoms/Buttons/MFCustomButton.m +++ b/MVMCoreUI/Atoms/Buttons/MFCustomButton.m @@ -13,6 +13,7 @@ @import MVMCore.NSDictionary_MFConvenience; #import "MVMCoreUIUtility.h" #import "MVMCoreUIConstants.h" +#import CGFloat const CloseButtonHeight = 40.0f; CGFloat const CloseButtonWidth = 40.0f; @@ -37,6 +38,52 @@ CGFloat const CloseButtonWidth = 40.0f; } } +- (void)setWithActionMap:(nullable NSDictionary *)actionMap delegateObject:(nullable MVMCoreUIDelegateObject *)delegateObject additionalData:(nullable NSDictionary *)additionalData { + + self.actionMap = actionMap; + self.titleLabel.numberOfLines = 0; + self.titleLabel.lineBreakMode = NSLineBreakByWordWrapping; + [self setTitle:[actionMap stringForKey:KeyTitle] forState:UIControlStateNormal]; + + [self setEnabled:![actionMap[KeyDisableButton]boolValue]]; + + self.buttonDelegate = delegateObject.buttonDelegate; + __weak MFCustomButton *weakSelf = self; + [self addBlock:^(id _Nonnull sender) { + + BOOL performAction = YES; + if (weakSelf.buttonDelegate && [weakSelf.buttonDelegate respondsToSelector:@selector(button:shouldPerformActionWithMap:additionalData:)]) { + performAction = [weakSelf.buttonDelegate button:weakSelf shouldPerformActionWithMap:actionMap additionalData:additionalData]; + } + + if (performAction) { + [[MVMCoreActionHandler sharedActionHandler] handleActionWithDictionary:actionMap additionalData:additionalData delegateObject:delegateObject]; + } + } forControlEvents:UIControlEventTouchUpInside]; +} + +//accessibility +-(void)addAccessibilityForCameraControl{ + self.accessibilityLabel = [MVMCoreUIUtility hardcodedStringWithKey:@"AccCameraButton"]; + self.accessibilityHint = [MVMCoreUIUtility hardcodedStringWithKey:@"AccCameraHint"]; + self.accessibilityTraits = UIAccessibilityTraitNone; +} + + +- (UIAccessibilityCustomAction *)accessibilityCustomAction { + NSString *name = self.accessibilityLabel ?: self.titleLabel.text; + return [[UIAccessibilityCustomAction alloc] initWithName:name target:self selector:@selector(performAccessibilityAction:)]; +} + +- (BOOL)performAccessibilityAction:(UIAccessibilityCustomAction *)action { + if (self.buttonTapBlock) { + self.buttonTapBlock(self); + } + return YES; +} + +#pragma mark - Deprecated + - (void)setWithActionMap:(nullable NSDictionary *)actionMap delegate:(nullable NSObject *)delegate additionalData:(nullable NSDictionary *)additionalData { self.actionMap = actionMap; @@ -53,11 +100,11 @@ CGFloat const CloseButtonWidth = 40.0f; } - (void)setWithActionMap:(nullable NSDictionary *)actionMap actionDelegate:(nullable NSObject *)actionDelegate additionalData:(nullable NSDictionary *)additionalData buttonDelegate:(nullable id )buttonDelegate { - + if (!buttonDelegate) { [self setWithActionMap:actionMap delegate:actionDelegate additionalData:additionalData]; } else { - + self.actionMap = actionMap; self.titleLabel.numberOfLines = 0; self.titleLabel.lineBreakMode = NSLineBreakByWordWrapping; @@ -86,24 +133,4 @@ CGFloat const CloseButtonWidth = 40.0f; } } -//accessibility --(void)addAccessibilityForCameraControl{ - self.accessibilityLabel = [MVMCoreUIUtility hardcodedStringWithKey:@"AccCameraButton"]; - self.accessibilityHint = [MVMCoreUIUtility hardcodedStringWithKey:@"AccCameraHint"]; - self.accessibilityTraits = UIAccessibilityTraitNone; -} - - -- (UIAccessibilityCustomAction *)accessibilityCustomAction { - NSString *name = self.accessibilityLabel ?: self.titleLabel.text; - return [[UIAccessibilityCustomAction alloc] initWithName:name target:self selector:@selector(performAccessibilityAction:)]; -} - -- (BOOL)performAccessibilityAction:(UIAccessibilityCustomAction *)action { - if (self.buttonTapBlock) { - self.buttonTapBlock(self); - } - return YES; -} - @end diff --git a/MVMCoreUI/OtherHandlers/DelegateObject.swift b/MVMCoreUI/OtherHandlers/DelegateObject.swift index e6c13dd5..d7a2ac65 100644 --- a/MVMCoreUI/OtherHandlers/DelegateObject.swift +++ b/MVMCoreUI/OtherHandlers/DelegateObject.swift @@ -11,8 +11,10 @@ import UIKit @objc(MVMCoreUIDelegateObject) open class DelegateObject: MVMCore.DelegateObject { public weak var formValidationProtocol: FormValidationProtocol? - + public weak var buttonDelegate: ButtonDelegateProtocol? + open override func setAll(withDelegate delegate: Any) { formValidationProtocol = delegate as? FormValidationProtocol + buttonDelegate = delegate as? ButtonDelegateProtocol } }