// // CopyableLable.swift // Tusker // // Created by Shadowfacts on 2/4/23. // Copyright © 2023 Shadowfacts. All rights reserved. // import UIKit class CopyableLable: UILabel { private var _editMenuInteraction: Any! @available(iOS 16.0, *) private var editMenuInteraction: UIEditMenuInteraction { get { _editMenuInteraction as! UIEditMenuInteraction } set { _editMenuInteraction = newValue } } override init(frame: CGRect) { super.init(frame: frame) commonInit() } required init?(coder: NSCoder) { super.init(coder: coder) commonInit() } private func commonInit() { if #available(iOS 16.0, *) { editMenuInteraction = UIEditMenuInteraction(delegate: nil) addInteraction(editMenuInteraction) isUserInteractionEnabled = true addGestureRecognizer(UILongPressGestureRecognizer(target: self, action: #selector(longPressed))) } } override func copy(_ sender: Any?) { UIPasteboard.general.string = text } @available(iOS 16.0, *) @objc private func longPressed(_ recognizer: UILongPressGestureRecognizer) { if recognizer.state == .began { editMenuInteraction.presentEditMenu(with: UIEditMenuConfiguration(identifier: nil, sourcePoint: CGPoint(x: bounds.midX, y: bounds.midY))) } } }