diff --git a/ERNiftyExtensions/Classes/UIKit/UICopyableLabel.swift b/ERNiftyExtensions/Classes/UIKit/UICopyableLabel.swift index 38f3de5..eb204e7 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 @@ -30,8 +34,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) @@ -39,12 +47,25 @@ open class UICopyableLabel: UILabel { } } + @objc func dismissMenu() { + self.alpha = 1 + NotificationCenter.default.removeObserver(self, name: UIMenuController.willHideMenuNotification, object: nil) + } + + 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 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 } @@ -59,3 +80,5 @@ open class UICopyableLabel: UILabel { return false } } + +