You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Xcode 10(Swift 5.1)中实现点击UILabel复制文本到剪贴板?

没问题!这俩功能实现起来超简单,适配你的Xcode 10和Swift 5.1环境,我给你一步步拆解清楚👇

实现可点击并复制文本的UILabel

步骤1:开启Label的交互权限

UILabel默认是关闭用户交互的,所以第一步必须先打开这个开关,否则它不会响应任何触摸事件。不管你是用Storyboard拖的Label,还是纯代码创建的,这一步都不能少。

步骤2:添加点击手势+复制逻辑

给Label绑定一个点击手势识别器,在手势触发的方法里,把Label的文本复制到系统剪贴板就搞定了。

下面是完整的代码示例(以纯代码创建Label为例,Storyboard创建的话逻辑完全一致):

import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        
        // 创建并配置Label
        let copyableLabel = UILabel()
        copyableLabel.text = "点我就能复制这段文本哦~"
        copyableLabel.frame = CGRect(x: 40, y: 200, width: view.bounds.width - 80, height: 44)
        copyableLabel.textAlignment = .center
        copyableLabel.textColor = .systemBlue // 用蓝色提示用户可点击
        copyableLabel.isUserInteractionEnabled = true // 核心:开启交互
        
        // 添加点击手势
        let tapGesture = UITapGestureRecognizer(target: self, action: #selector(copyLabelText(_:)))
        copyableLabel.addGestureRecognizer(tapGesture)
        
        view.addSubview(copyableLabel)
    }
    
    // 点击触发的复制方法
    @objc private func copyLabelText(_ sender: UITapGestureRecognizer) {
        // 先确保手势触发的是UILabel,且文本不为空
        guard let targetLabel = sender.view as? UILabel, let textToCopy = targetLabel.text else {
            return
        }
        
        // 复制到系统剪贴板
        UIPasteboard.general.string = textToCopy
        
        // 可选:给用户一个复制成功的反馈(基础级别可加可不加)
        let successAlert = UIAlertController(title: "搞定!", message: "文本已经复制到剪贴板啦", preferredStyle: .alert)
        successAlert.addAction(UIAlertAction(title: "好的", style: .default))
        present(successAlert, animated: true)
    }
}

关键细节说明

  • isUserInteractionEnabled = true:这是让Label能“接收到”点击的前提,千万别忘了设置。
  • UITapGestureRecognizer:通过这个手势识别器来捕捉用户的点击动作,绑定对应的处理方法。
  • UIPasteboard.general.string:系统全局剪贴板的实例,直接把文本赋值给它就完成复制操作了,非常省心。
  • 反馈提示:添加alert是为了让用户明确知道复制成功,基础级别可以选择保留或者去掉,不影响核心功能。

如果是用Storyboard创建的Label,只需要在viewDidLoad里获取Label的IBOutlet引用,然后执行开启交互、添加手势的步骤就行,逻辑和上面完全一样。

内容的提问来源于stack exchange,提问作者Squared

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 08:24:45