可以长按复制文本的UILabel

使用方法和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:))
    }

}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容