forked from shadowfacts/Tusker
51 lines
1.4 KiB
Swift
51 lines
1.4 KiB
Swift
//
|
|
// 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)))
|
|
}
|
|
}
|
|
|
|
}
|