UIPasteboard 粘贴板,复制粘贴UILabel,UIImageView的数据

数学建模传染病模型_【数学建模】之传染病模型 点击【拇指笔记】,关注我的公众号。SE模型缺点:没有考虑接触到的人中还有一部分病人,所以所有人并不会全部被感染。建立模型:已感染人数(病人)每个病人每天有效接触(足以使人致病)人数为根据(1)(2)可以建立模型:等式两边同时除以\Delta t由导数定义有同时,取\Delta t = 1天由(1)(5)两式可得最终的模型:Logistic模型缺点:区分已感染者(病人)和未感染者(健康人)... 阅读详情

有时候我们可能需要复制UILabel上的文本,或者UIImageView的图片,而UILabel和UIImageView默认是不响应Touch事件的,也无法复制,那么我们就需要自己实现一个可复制的UILabel。新添加一个类继承自UILabel:

  1. @interface UICopyLabel : UILabel  
  2.   
  3. @end  
  1. #import "UICopyLabel.h"  
  2.   
  3. @implementation UICopyLabel  
  4.   
  5. @end  

为了能接收到事件(能成为第一响应者),我们需要覆盖一个方法:

  1. -(BOOL)canBecomeFirstResponder{  
  2.     return YES;  
  3. }  

还需要针对复制的操作覆盖两个方法:

  1. //"反馈"关心的功能  
  2. -(BOOL)canPerformAction:(SEL)action withSender:(id)sender{  
  3.     return (action == @selector(copy:));  
  4. }  
  5. //针对于copy的实现  
  6. -(void)copy:(id)sender{  
  7.     UIPasteboard *pboard = [UIPasteboard generalPasteboard];  
  8.     pboard.string = self.text;  
  9. }  
有了以上三个方法,我们就能处理copy了,当然,在能接收到事件的情况下:
  1. //UILabel默认是不接收事件的,我们需要自己添加touch事件  
  2. -(void)attachTapHandler{  
  3.     self.userInteractionEnabled = YES;  //用户交互的总开关  
  4.     UITapGestureRecognizer *touch = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTap:)];  
  5.     touch.numberOfTapsRequired = 2;  
  6.     [self addGestureRecognizer:touch];  
  7.     [touch release];  
  8. }  
  9. //绑定事件  
  10. - (id)initWithFrame:(CGRect)frame  
  11. {  
  12.     self = [super initWithFrame:frame];  
  13.     if (self) {  
  14.         [self attachTapHandler];  
  15.     }  
  16.     return self;  
  17. }  
  18. //同上  
  19. -(void)awakeFromNib{  
  20.     [super awakeFromNib];  
  21.     [self attachTapHandler];  
  22. }  

我们已经可以接收到事件了!由于我在上方将tap数设为2,所以需要双击才能捕获,接下来,我们需要处理这个tap,以便让菜单栏弹出来:

  1. -(void)handleTap:(UIGestureRecognizer*) recognizer{  
  2.     [self becomeFirstResponder];  
  3.     UIMenuController *menu = [UIMenuController sharedMenuController];  
  4.     [menu setTargetRect:self.frame inView:self.superview];  
  5.     [menu setMenuVisible:YES animated:YES];  
  6. }  

这样一来,一个可复制的UILabel就诞生了!它能处理接收点击、弹出菜单栏、处理copy,这是一个很普通的可复制控件。

-----------------------------------------猥琐的分界线-----------------------------------------

接下来我们做一个可复制的UIImageView,创建一个新的viewController,放两个imageView,默认显示不同的图:


然后把上面的代码直接拷过来,改三个地方:

  1. -(BOOL)canPerformAction:(SEL)action withSender:(id)sender{  
  2.     return (action == @selector(copy:) || action == @selector(paste:));  
  3. }  
  4.   
  5. -(void)copy:(id)sender{  
  6.     UIPasteboard *pboard = [UIPasteboard generalPasteboard];  
  7.     pboard.image = self.image;  
  8. }  
  9.   
  10. -(void)paste:(id)sender{  
  11.     UIPasteboard *pboard = [UIPasteboard generalPasteboard];  
  12.     self.image = pboard.image;  
  13. }  
-----------------------------------------猥琐的分界线-----------------------------------------
UIPasteboard不仅可以在应用程序内通信,还能在应用程序间通信,你应该已经见到过了,比如我复制一个url,然后打开safari,粘贴到地址栏去,而我们可以在应用程序间“悄悄”的通信、共享数据。

注:这里的“悄悄”只是说其他的应用程序不知道,而系统是允许的。

我们用模板Single View Application来创建两个简单的工程,一个叫PasteBoardWrite,另一个叫PasteBoardRead,界面分别如下:

     

在PasteBoardWrite里面点“写入”后把textField中的文本写入粘贴板,然后切换到PasteBoardRead的时候显示出来。如果我们的粘贴板只想给“自己人”用的话,就不能用系统的通用粘贴板,需要我们自己创建一个:

  1. //需要提供一个唯一的名字,一般使用倒写的域名:com.mycompany.myapp.pboard  
  2. //后面的参数表示,如果不存在,是否创建一个  
  3. UIPasteboard *pb = [UIPasteboard pasteboardWithName:@"testBoard" create:YES];  
使用这个粘贴板,我们可以把文本存进去,然后在另一个app里面读出来,一些常用的类型已经被设置为属性了:


除此之外,如果是能够转换成plist的数据类型(NSString, NSArray, NSDictionary, NSDate, NSNumber 和 NSURL),我们可以调用setValue:forPasteboardType:方法去存储数据,其他类型只能调用setData:forPasteboardType:方法(plist数据类型也可使用),类似于这样:

  1. NSDictionary *dict = [NSDictionary dictionaryWithObject:textField.text forKey:@"content"];  
  2. NSData *dictData = [NSKeyedArchiver archivedDataWithRootObject:dict];  
  3. [pb setData:dictData forPasteboardType:@"myType"];  
获取就类似于这样:

  1. UIPasteboard *pb = [UIPasteboard pasteboardWithName:@"testBoard" create:YES];  
  2. NSDictionary *dict = [NSKeyedUnarchiver unarchiveObjectWithData:[pb dataForPasteboardType:@"myType"]];  
  3. caption.text = [dict objectForKey:@"content"];  

上面提到了一个PasteboardType,这是一个统一类型标识符(Uniform Type Identifier  UTI),能帮助app获取自己能处理的数据。比如你只能处理文本的粘贴,那给你一个UIImage显然是无用的。你可以使用公用的UTI,也可以使用任意字符,苹果建议使用倒写的域名加上类型名:com.myCompany.myApp.myType。

用自己创建的粘贴板,能只在你的本地应用之间通信,有时候它能让你的用户体验变得更好,比如微信就是这么做的。

[Unity Demo]从零开始制作空洞骑士Hollow Knight第四集:制作更多的敌人 大家好久不见,终于放完中秋假期可以回自己家里打代码了,上一期我介绍了为什么和如何导入2D toolkit以及制作一个完整的敌人(就是那只蚊子包括了精灵,动画,状态机行为以及脚本)现在不妨趁热打铁制作更多的敌人。 阅读详情

相关推荐

使用Python开发TreeATE的测试脚本常见问题

ImportError: No module named py_compile 找不到 DevLangPython3.dll 以上2个问题都是没有安装正确的Python,当前TreeATE依赖32位Python 2.7版本,暂时不支持Python 3以上版本

蓝白云的专栏 1032

Mac其他部分占据空间过多问题

删除: /private/var/folders/.../shared-pasteboard/ 可以通过DaisyDick(软件)定位 这些文件是苹果设备之间的”接力”(HandOff)共享剪切板的缓存文件

jifengzhiyu的博客 2466

Python解析骑行fit文件:从数据缺失到完整记录

本文详细介绍了如何利用Python解析和处理骑行FIT文件,解决数据缺失问题。通过使用fitparse库读取二进制FIT文件,并结合Garmin FitCSVTool进行格式转换,指导读者一步步诊断数据完整性、设计心率修补方案,并最终生成完整的骑行记录文件。该方法为骑行爱好者提供了灵活的数据修复与自定义分析能力。

weixin_29062255的博客 456

精通UIPasteboard 粘贴板

有时候我们可能需要复制UILabel上的文本,或者UIImageView的图片,而UILabel和UIImageView默认是不响应Touch事件的,也无法复制,那么我们就需要自己实现一个可复制的UILabel。新添加一个类继承自UILabel: @interface UICopyLabel : UILabel @end#import "UICopyLabel.h" @implement

Bannings的专栏 3万+

用Python和sklearn预测NBA比赛胜负:从数据清洗到模型优化的完整流程

本文详细介绍了如何使用Python和sklearn构建NBA比赛胜负预测模型,涵盖从数据清洗、特征工程到模型优化与部署的完整流程。通过对比随机森林、XGBoost等主流算法,提供实战技巧和解决方案,帮助数据爱好者掌握体育数据分析的核心技术。

weixin_30823001的博客 131

CTFHUB------XSS反射型(WP)

文章目录前言XSS测试平台 前言 一开始我直接在上面写js脚本发现出错,最后发现只能通过下面的输入框来执行XSS测试,于是我们只能用XSS测试平台解决问题 XSS测试平台 注册一个XSS测试平台 这里随便填写 勾选默认模块就够了,点击下一步 这时会出现一个找个将代码复制 拼接到网站后缀name后面,点击send 这时平台会收到一个记录点开即可 得到flag ...

Y4tacker的博客 1万+

iOS UIPasteboard

In this tutorial, we’ll be discussing and implementing the UIPasteboard class in our iOS Application. 在本教程中,我们将在iOS应用程序中讨论和实现UIPasteboard类。 UIPasteboard (UIPasteboard) The UIPasteboard class provide...

从零开始的教程世界 2156

PADS VX2.7学习记录05-PADS Layout设计文件Gerber等输出整理

在“PDF Document”栏中,依次选中除REF-TOP和REF-BOT之外的文件,单击图标,将其余PDF Document文件进行删除,如图所示。然后单击【生成PDF】按钮,即可创建一份PDF格式的位号图。

tianpu2320959696的博客 1023

iOS 实现APP之间内容的拷贝、分享

有时候,开发中需要我们实现“将一个APP的文件拷贝到另一个APP上并实现上传等功能”,那我们怎么去实现呢? 下面介绍一种方法: App Extension 在iOS8中实现的跨APP数据操作和分享。 首先新建一个工程,并指定属性就能实现上述的需求啦,具体如下图 到这里,差不多就已经实现啦 另外,在 //9.0之前 - (BOOL)application:(UIApplicatio...

RangingWon的博客 1万+

大模型复杂问答能力评测框架:从原理到实践

在人工智能领域,大语言模型(LLM)的评估是衡量其实际应用价值的关键环节。其核心原理在于通过系统化的评测框架,对模型的理解、推理、整合与表达能力进行量化分析。传统的NLP基准测试往往侧重于事实性检索或简单推理,难以全面反映模型在应对多跳推理、隐含条件、长上下文整合等复杂现实任务时的真实性能。因此,专门针对复杂问答设计的评测技术应运而生,其价值在于为模型选型、效果优化和瓶颈诊断提供数据驱动的科学依据。该技术广泛应用于需要深度逻辑判断的业务场景,如智能投顾、法律咨询、医疗诊断等。本文聚焦的`tan92hl/Co

weixin_28679635的博客 361

线性自抗扰控制(LADRC)系统算法框图

NLADRC自抗扰控制从Simulink仿真到PLC控制实现_自抗扰控制器 simulink仿真-优快云博客本文介绍了如何将ADRC自抗扰控制算法从Simulink仿真应用到PLC控制中,包括Simulink框图、TD微分器模型、MATLAB函数的使用、SCL控制代码,以及非线性状态误差反馈控制率的实现。提供了详细的MATLAB仿真步骤和PLC源代码链接。ADRC自抗扰控制算法(含梯形图完整源代码和算法公式)_adrc算法-优快云博客。

RXXW_Dor的博客 1461

iOS-基础控件--UIPasteboard、UIMenuController使用总结

枝上柳绵吹又少,天涯何处无芳草!<暖暖猪> 代码参考:GitHub UIPasteboard简单介绍 <u>这个类是用来管理粘贴板的,粘贴板就是用来存放我们复制、剪切内容的,iOS 中有3 个控件自带剪切板操作UITextField、UITextView、UIWebView长按手势就可以展现出系统剪切板,然后就可以进行复制、粘贴,剪切...

小超人的博客 512

华为OD机试双机位C卷:挑选宝石 (C/C++/Python/JAVA/JS/GO)

华为OD机试双机位C卷 挑选宝石,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解。华为OD机试-挑选宝石,华为OD机考-挑选宝石。

qq_45776114的博客 1500

IOS --关于粘贴板 ,剪切板 ,UILabel的复制

在iOS中下面三个控件,自身就有复制-粘贴的功能: 1、UITextView 2、UITextField 3、UIWebView UIKit framework提供了几个类和协议方便我们在自己的应用程序中实现剪贴板的功能。 1、UIPasteboard:我们可以向其中写入数据,也可以读取数据2、UIMenuController:显示一个快捷菜单,用来展示复制、剪贴、粘...

weixin_30629977的博客 98

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

iOS 剪贴板基本知识

在iOS中下面三个控件,自身就有复制-粘贴的功能:  1、UITextView  2、UITextField  3、UIWebView UIKit framework提供了几个类和协议方便我们在自己的应用程序中实现剪贴板的功能。  1、UIPasteboard:我们可以向其中写入数据,也可以读取数据  2、UIMenuController:显示一个快捷菜单,用来

王颜华的博客 3185

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

剪贴板UIPasteboard

剪贴板的分类 剪贴板分为系统的和app私有的 剪贴板必须有个名字。系统的剪贴板有两个,一个叫UIPasteboardNameGeneral,一个叫UIPasteboardNameFind,它们的使用场合不一样。 通过 generalPasteboard可以获得名字为UIPasteboardNameGeneral的剪贴板,通常用来复制、剪切和粘贴。 一个创建或者获取剪贴板的方法pastebo...

ohyeahhhh的博客 1687

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

macOS “系统数据”突然暴涨排查笔记

日期:2026-06-26。

m0_73361516的博客 410

iOS Tips,不用就会忘记

1.LLDB调试打印 2. UIWebView设置UA 3. 预处理宏,Preprocessor Macros 4. 快捷键 5. 执行xcodebuild命令 不工作 xcodebuild not work , 输出 Build settings from command line: 命令后停止。用Xcode打开后就可以执行 编译命令了。 6. iOS 8.3之后获取i...

狼族小子的专栏 1235

iOS开发之详解剪贴板

概述: 在iOS中,可以使用剪贴板实现应用程序之中以及应用程序之间实现数据的共享。比如你可以从iPhone QQ复制一个url,然后粘贴到safari浏览器中查看这个链接的内容。 一、在iOS中下面三个控件,自身就有复制-粘贴的功能: 1、UITextView2、UITextField3、UIWebView 二、UIKit framework提供了几个类和协议方便我们在自...

diejia1113的博客 591

UIPasteboard 的使用方式:(粘贴、复制类的使用方法)

1.概述 UIPasteboard是ios中访问粘贴板的原生控件,可分为系统等级的和app等级的,系统等级的独立于app,可以复制一个app的内容到另一个app;app等级的只能在app内进行复制和粘贴;它们分别由+ (nullable UIPasteboard *)pasteboardWithName:(NSString *)pasteboardName create:(BOOL)create

风铃的翼的博客 4907

iOS剪贴板

iOS系统剪贴板有两种:公共剪贴板和私有剪贴板。 公共剪贴板:用于不同APP之间传递数据 UIPasteboard *generalPasteboard = [UIPasteboard generalPasteboard]; //快捷创建方法 UIPasteboard *generalPasteboard = [UIPasteboard pasteboardWithName:UIPasteboardNameGeneral create:TRUE]; 第一个参数UIPasteboardNameGene

培根芝士的专栏 1442

华山论剑之浅谈iOS剪切黏贴(UIPasteboard和UIMenuController)

每个程序猿都是一名强大的战士,名曰CV战士. ###序言 如上图,我们在应用程序中时常需要有黏贴复制的功能,像UIWebView,UITextField,UITextView这些类都是自带黏贴复制功能的,但是我们先让某个控件具有黏贴复制功能,我们该怎么办呢?那就需要用到两个类,一个是UIPasteboard,另外一个就是UIMenuController,一个是剪切板,另外一个是菜单弹窗. #### 从UIMenuController到菜单弹窗的完美变身 *** UIMenuController的.

得不到的永远是骚栋. 940

iOS—UIPasteboard使用注意事项

初始化方法 UIPasteboard 的初始化方法主要有3类 //获取系统级别的剪切板 + (UIPasteboard *)generalPasteboard; //获取一个自定义的剪切板 name参数为此剪切板的名称 create参数用于设置当这个剪切板不存在时 是否进行创建 + (nullable UIPasteboard *)pasteboardW...

weixin_33910434的博客 1774

UIPasteboard的使用

简单介绍UIPasteboard以及简单的函数使用

dali的博客 5004

【Flutter】iOS上使用 UIPasteboard.detectPatterns 优化剪切板权限弹窗逻辑

在上篇文章中,我们探讨了如何通过优化剪切板权限弹窗的触发逻辑,来减少用户体验中的误操作。本文将进一步深入,介绍如何通过预先检测剪切板内容,确保只有符合特定规则的数据才会触发授权弹窗。这样不仅能够提升用户体验,还可以避免不必要的授权请求,尤其是与深度链接和从剪切板获取内容相关的场景。

lhj_android的博客 3672

iOS剪切板 UIPasteboard

1、前言 iOS在某些特定时刻需要把内容重一个app拷贝到另一个app 这时候我们就可以使用剪切板UIPasteboard 2、iOS自带剪切板操作的原生UI控件 在iOS中下面三个控件,自身就有复制-粘贴的功能: (1)、UITextView (2)、UITextField (3)、UIWebView3、系统的剪切板UIPasteboard UIPasteboard类有3个初始化方法://

qq_35827461的博客 464
上一篇: XCode lldb Debug 教程
下一篇: 动态调整 UITableViewCell高度
一秀
博客等级 码龄14年 1粉丝 11原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值