iOS开发中可复制文本的Label

本文介绍了如何在iOS应用中创建一个可复制文本的自定义UILabel。通过继承UILabel,添加触摸事件(长按手势),并实现成为第一响应者、拷贝功能,实现了用户能够方便地复制Label上的文本。详细步骤包括设置用户交互、添加长按手势、实现拷贝方法以及在Xib或Storyboard中的使用方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在开发过程中,一个需求就是需要label中的文本是可复制的,在网上搜集资料,最后封装如下:

      (1)首先创建一个类继承于UI Label,我将它命名为LYLabel;因为label默认是不接收事件的,我们需要自己 在LYLabel.m文件中给label添加touch事件。代码如下:

        -(void)addTouch{

             self.userInteractionEnabled = YES //用户交互的总开关

             UILongPressGestureRecognizer *touch = [[UILongPressGestureRecognizer alloc] initWithTarget:self                action:@selector(addgesture:)];

             [self addGestureRecognizer:touch];

         }

   (2)手势触发的事件:

        -(void)addgesture:(UILongPressGestureRecognizer*) recognizer{

              [self becomeFirstResponder];

              UIMenuController *menu = [UIMenuController sharedMenuController];

              [menu setTargetRect:self.frame inView:self.superview];

              [menu setMenuVisible:YES animated:YES];

         }

  (3)再开启一下其他必要的功能,如开启第一响应者等:

       // default is NO

       - (BOOL)canBecomeFirstResponder{

               return YES;

       }

      //"反馈"关心的功能

       -(BOOL)canPerformAction:(SEL)action withSender:(id)sender{

               return (action == @selector(copy:));

       }

     //针对于copy的实现

       -(void)copy:(id)sender{

               UIPasteboard *pboard = [UIPasteboard generalPasteboard];

               pboard.string = self.text;

       }

  (4)最后,绑定事件,主要看你的label实在Xib或者Storyboard画的还是用代码创建的:

      如果用代码创建的话:

       //绑定事件

       - (id)initWithFrame:(CGRect)frame{

            self = [super initWithFrame:frame];

            if (self) {

              [self addTouch];

            }

            return self;

        }

      如果再xib或者storyboard文件中画的话: 

      -(void)awakeFromNib{

         [super awakeFromNib];

         [self addTouch];

      }

  (5)调用。封装完成之后,调用就很简单了:

    LYCopyLabel *lable = [[LYCopyLabel alloc]initWithFrame:CGRectMake(0, 100, 200, 100)];

    lable.text = @"sajdlajkjdka";

    [self.view addSubview:lable];

最后,一个可复制文本的lable就完成了。功能简单,闲来无事,写了一个demo。






                  


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值