// // InteractiveLabel.swift // NetNewsWire-iOS // // Created by Maurice Parker on 11/3/19. // Copyright © 2019 Ranchero Software. All rights reserved. // import UIKit @IBDesignable class InteractiveLabel: UILabel { override init(frame: CGRect) { super.init(frame: frame) commonInit() } required init?(coder: NSCoder) { super.init(coder: coder) commonInit() } func commonInit() { let gestureRecognizer = UILongPressGestureRecognizer(target: self, action: #selector(handleLongPressGesture(_:))) self.addGestureRecognizer(gestureRecognizer) self.isUserInteractionEnabled = true } @objc func handleLongPressGesture(_ recognizer: UIGestureRecognizer) { guard recognizer.state == .began, let recognizerView = recognizer.view, let recognizerSuperView = recognizerView.superview, recognizerView.becomeFirstResponder() else { return } UIMenuController.shared.showMenu(from: recognizerSuperView, rect: recognizerView.frame) } override var canBecomeFirstResponder: Bool { return true } override func canPerformAction(_ action: Selector, withSender sender: Any?) -> Bool { return (action == #selector(UIResponderStandardEditActions.copy(_:))) } override func copy(_ sender: Any?) { UIPasteboard.general.string = text } }