// // CopyableLabel.swift // YggdrasilNetwork // // Created by Neil Alexander on 26/02/2019. // import UIKit class CopyableLabel: UILabel { override public var canBecomeFirstResponder: Bool { get { return true } } override init(frame: CGRect) { super.init(frame: frame) self.isUserInteractionEnabled = true self.addGestureRecognizer(UILongPressGestureRecognizer( target: self, action: #selector(showMenu(sender:)) )) } required init?(coder aDecoder: NSCoder) { super.init(coder: aDecoder) self.isUserInteractionEnabled = true self.addGestureRecognizer(UILongPressGestureRecognizer( target: self, action: #selector(showMenu(sender:)) )) } override func copy(_ sender: Any?) { UIPasteboard.general.string = text UIMenuController.shared.setMenuVisible(false, animated: true) } @objc func showMenu(sender: Any?) { self.becomeFirstResponder() let menu = UIMenuController.shared if !menu.isMenuVisible { menu.setTargetRect(bounds, in: self) menu.setMenuVisible(true, animated: true) } } override func canPerformAction(_ action: Selector, withSender sender: Any?) -> Bool { return (action == #selector(copy(_:))) } }