From dce172bb640b51a65236cb1f29012e831e1701d7 Mon Sep 17 00:00:00 2001 From: Krishna Kishore Bandaru Date: Mon, 28 Nov 2022 14:57:53 +0530 Subject: [PATCH] CXTDT-352289 - disabled clipboard actions --- .../Atoms/FormFields/TextFields/TextEntryField.swift | 1 + .../FormFields/TextFields/TextEntryFieldModel.swift | 7 +++++++ MVMCoreUI/BaseClasses/TextField.swift | 10 +++++++++- 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/TextEntryField.swift b/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/TextEntryField.swift index 07260ac1..18749c8a 100644 --- a/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/TextEntryField.swift +++ b/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/TextEntryField.swift @@ -338,6 +338,7 @@ import UIKit placeholder = model.placeholder textField.shouldMaskWhileRecording = model.shouldMaskRecordedView ?? true + textField.enableClipboardActions = model.enableClipboardActions switch model.type { case .password, .secure: diff --git a/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/TextEntryFieldModel.swift b/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/TextEntryFieldModel.swift index 7d2eb987..053a5ac5 100644 --- a/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/TextEntryFieldModel.swift +++ b/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/TextEntryFieldModel.swift @@ -37,6 +37,7 @@ public var clearTextOnTap: Bool = false public var displayFormat: String? public var displayMask: String? + public var enableClipboardActions: Bool = true //-------------------------------------------------- // MARK: - Initializers @@ -112,6 +113,7 @@ case clearTextOnTap case displayFormat case displayMask + case enableClipboardActions } //-------------------------------------------------- @@ -143,6 +145,10 @@ if let textAlignment = try typeContainer.decodeIfPresent(NSTextAlignment.self, forKey: .textAlignment) { self.textAlignment = textAlignment } + + if let enableClipboardActions = try typeContainer.decodeIfPresent(Bool.self, forKey: .enableClipboardActions) { + self.enableClipboardActions = enableClipboardActions + } } open override func encode(to encoder: Encoder) throws { @@ -157,5 +163,6 @@ try container.encode(enabledTextColor, forKey: .enabledTextColor) try container.encode(disabledTextColor, forKey: .disabledTextColor) try container.encode(clearTextOnTap, forKey: .clearTextOnTap) + try container.encode(enableClipboardActions, forKey: .enableClipboardActions) } } diff --git a/MVMCoreUI/BaseClasses/TextField.swift b/MVMCoreUI/BaseClasses/TextField.swift index 306b363f..1f5d1b09 100644 --- a/MVMCoreUI/BaseClasses/TextField.swift +++ b/MVMCoreUI/BaseClasses/TextField.swift @@ -23,7 +23,7 @@ public protocol TextInputDidDeleteProtocol: AnyObject { /// Set to true to hide the blinking textField cursor. public var hideBlinkingCaret = false - + public var enableClipboardActions: Bool = true public var shouldMaskWhileRecording: Bool = true //-------------------------------------------------- @@ -74,6 +74,14 @@ public protocol TextInputDidDeleteProtocol: AnyObject { super.deleteBackward() didDeleteDelegate?.textInputDidDelete() } + + open override func buildMenu(with builder: UIMenuBuilder) { + defer { super.buildMenu(with: builder) } + guard !enableClipboardActions else { return } + builder.remove(menu: .lookup) + } + + open override func canPerformAction(_ action: Selector, withSender sender: Any?) -> Bool { enableClipboardActions } } /// MARK:- MVMCoreViewProtocol