From 94bdb09a139d18d6bc5c959030f601e3aa89a621 Mon Sep 17 00:00:00 2001 From: sky Date: Mon, 16 Dec 2019 18:37:15 -0800 Subject: [PATCH 1/3] change alpha --- ERNiftyExtensions/Classes/UIKit/UICopyableLabel.swift | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/ERNiftyExtensions/Classes/UIKit/UICopyableLabel.swift b/ERNiftyExtensions/Classes/UIKit/UICopyableLabel.swift index 38f3de5..b4335a4 100644 --- a/ERNiftyExtensions/Classes/UIKit/UICopyableLabel.swift +++ b/ERNiftyExtensions/Classes/UIKit/UICopyableLabel.swift @@ -30,8 +30,12 @@ open class UICopyableLabel: UILabel { self.addGestureRecognizer(longPress) } - @objc private func showMenu(_ sender: AnyObject?) { + @objc private func showMenu(_ recognizer:UILongPressGestureRecognizer) { becomeFirstResponder() + if recognizer.state == .began { + self.alpha = 0.6 + } + let menu = UIMenuController.shared if !menu.isMenuVisible { menu.setTargetRect(bounds, in: self) @@ -40,7 +44,7 @@ open class UICopyableLabel: UILabel { } open override func copy(_ sender: Any?) { - + self.alpha = 1 let board = UIPasteboard.general board.string = text let menu = UIMenuController.shared @@ -59,3 +63,5 @@ open class UICopyableLabel: UILabel { return false } } + + From a9c6abcb72c3f5696bc21721d81e66d03257ee68 Mon Sep 17 00:00:00 2001 From: sky Date: Tue, 17 Dec 2019 11:21:42 -0800 Subject: [PATCH 2/3] add change alpha when dismiss menu --- .../Classes/UIKit/UICopyableLabel.swift | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/ERNiftyExtensions/Classes/UIKit/UICopyableLabel.swift b/ERNiftyExtensions/Classes/UIKit/UICopyableLabel.swift index b4335a4..47d156f 100644 --- a/ERNiftyExtensions/Classes/UIKit/UICopyableLabel.swift +++ b/ERNiftyExtensions/Classes/UIKit/UICopyableLabel.swift @@ -21,6 +21,10 @@ open class UICopyableLabel: UILabel { sharedInit() } + deinit { + NotificationCenter.default.removeObserver(self, name: UIMenuController.willHideMenuNotification, object: nil) + } + private func sharedInit() { isUserInteractionEnabled = true @@ -43,6 +47,15 @@ open class UICopyableLabel: UILabel { } } + @objc func dismissMenu() { + self.alpha = 1 + } + + open override func becomeFirstResponder() -> Bool { + NotificationCenter.default.addObserver(self, selector: #selector(dismissMenu), name: UIMenuController.willHideMenuNotification, object: nil) + return super.becomeFirstResponder() + } + open override func copy(_ sender: Any?) { self.alpha = 1 let board = UIPasteboard.general From aab03f7d7bb7e43723d778070c6e9904fa5e4f5e Mon Sep 17 00:00:00 2001 From: sky Date: Tue, 17 Dec 2019 13:43:24 -0800 Subject: [PATCH 3/3] add remove observer when copy or dismiss menu --- ERNiftyExtensions/Classes/UIKit/UICopyableLabel.swift | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/ERNiftyExtensions/Classes/UIKit/UICopyableLabel.swift b/ERNiftyExtensions/Classes/UIKit/UICopyableLabel.swift index 47d156f..eb204e7 100644 --- a/ERNiftyExtensions/Classes/UIKit/UICopyableLabel.swift +++ b/ERNiftyExtensions/Classes/UIKit/UICopyableLabel.swift @@ -49,6 +49,7 @@ open class UICopyableLabel: UILabel { @objc func dismissMenu() { self.alpha = 1 + NotificationCenter.default.removeObserver(self, name: UIMenuController.willHideMenuNotification, object: nil) } open override func becomeFirstResponder() -> Bool { @@ -58,10 +59,13 @@ open class UICopyableLabel: UILabel { open override func copy(_ sender: Any?) { self.alpha = 1 + let board = UIPasteboard.general board.string = text let menu = UIMenuController.shared menu.setMenuVisible(false, animated: true) + + NotificationCenter.default.removeObserver(self, name: UIMenuController.willHideMenuNotification, object: nil) } open override var canBecomeFirstResponder: Bool { return true }