美文网首页
可以长按复制文本的UILabel

可以长按复制文本的UILabel

作者: T92 | 来源:发表于2018-01-30 17:10 被阅读6次

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

}

相关文章

网友评论

      本文标题:可以长按复制文本的UILabel

      本文链接:https://www.haomeiwen.com/subject/knbczxtx.html