使用方法和UILabel一模一样,长按时可以进行复制
import UIKit
class TBUICopyLabel: UILabel {
override var canBecomeFirstResponder: Bool {
return true
}
override init(frame: CGRect) {
super.init(frame: frame)
setUp()
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
func setUp(){
isUserInteractionEnabled = true
let longPress = UILongPressGestureRecognizer(target: self, action: #selector(longPressAction))
addGestureRecognizer(longPress)
}
func longPressAction(){
becomeFirstResponder()
let menu = UIMenuController.shared
let item = UIMenuItem(title: "复制", action: #selector(copyText(menu:)))
menu.menuItems = [item]
menu.setTargetRect(bounds, in: self)
menu.setMenuVisible(true, animated: true)
}
func copyText(menu: UIMenuController){
guard text != nil else { return }
let paste = UIPasteboard.general
paste.string = text
}
override func canPerformAction(_ action: Selector, withSender sender: Any?) -> Bool {
return action == #selector(copyText(menu:))
}
}