iOS控件:Label--自定义可粘贴复制的Label

最近一直没有更新简书是因为在开发和测试阶段,有任务,没有进行学习,不过在做任务的时候也遇到了一些技术点,在这里总结一下。

今天遇到一个需求是一个Label上的文字可以进行复制,众所周知,我们的Label上边的文字是不易复制的,那我们怎么办?查找了一下资料,发现可以通过自定义Label的方式进行实现。

参考资料:传送门

在iOS中下面三个控件,自身就有复制-粘贴的功能:

1、UITextView

2、UITextField

3、UIWebView

UIKit framework提供了几个类和协议方便我们在自己的应用程序中实现剪贴板的功能。

1、UIPasteboard:我们可以向其中写入数据,也可以读取数据

2、UIMenuController:显示一个快捷菜单,用来展示复制、剪贴、粘贴等选择的项。

3、UIResponder中的 canPerformAction:withSender:用于控制哪些命令显示在快捷菜单中。

4、当快捷菜单上的命令点击的时候,UIResponderStandardEditActions将会被调用。

下面这些项能被放置到剪贴板中

1、UIPasteboardTypeListString —   字符串数组, 包含kUTTypeUTF8PlainText

2、UIPasteboardTypeListURL —   URL数组,包含kUTTypeURL

3、UIPasteboardTypeListImage —   图形数组, 包含kUTTypePNG 和kUTTypeJPEG

4、UIPasteboardTypeListColor —   颜色数组

剪贴板的类型分为两种:

系统级:使用UIPasteboardNameGeneral和UIPasteboardNameFind,系统级应用程序关闭,或者卸载的数据不会丢失。

应用程序级:通过设置,可以让数据在应用程序关闭之后仍然保存在剪贴板中,但是应用程序卸载之后数据就会失去。我们可用通过pasteboardWithName:create:来创建。

下边我们就跟随上边传送门的资料,一步一步的实现自定义可以复制的Label。首先我们新建一个继承自UILabel的自定义Label。下边的图是.h文件里面的东西。

可以看出我们设置的枚举值里面是有两个:复制粘贴功能、只有复制功能。

下边是.m文件:

至此,自定义结束。后边是如何使用该自定义的Label。

看到上图,我们只是引入了头文件,然后和创建平时的Label一样设置,设置labelType的时候需要选择一下是两个功能里面的哪种即可。


通过这个自定义我们就实现了Label里面的内容可以进行复制的功能。

最后,哪里不对的地方可以给我留言,我会及时改进的,谢谢大家。

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

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,991评论 19 139
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,532评论 25 708
  • 江南是烟花迷离之乡,养育过多少洁净温柔的女子,在这世间留下多少动人的痕迹。 谁也未曾想过,多年后一个叫林徽因的女子...
    目见阅读 427评论 0 0
  • COLOR的定义是采用ARGB的方式,以int型数字来表示。Color.argb((int) 255, 32, 4...
    秋缘未了阅读 9,753评论 1 1
  • 透过你的皮看见了你的骨。天天做稀奇古怪的梦。不遗余力,加油!
    猫又阅读 180评论 0 0