ios 剪贴板

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

    剪贴板为操作系统提供了一块集中存放数据的区域,使得应用程序之间可以共享数据。用户可以在某个程序里复制一份数据,然后切换到其他程序,将那份数据黏贴到那个程序里。大部分操作系统里面都有与剪切、复制、粘贴操作类似的功能。此外,用户也可以在同一个应用程序内部的文本框与视图之间复制并粘贴数据,而开发者则可以创建应用程序专用的剪贴板,它里面存放的数据,其他程序无法解读。

    UIPasteboard类可以访问设备共用的剪贴板及其中的内容。下面的这行代码可以返回通用的系统剪贴板,绝大部分复制、粘贴操作都可以在它上面执行:

UIPasteboard *pb = [UIPasteboard generalPasteboard];

    有系统所提供的通用剪贴板和搜索剪贴板是设备上所有程序共用的。除了这些共享的系统剪贴板之外,iOS还提供了应用程序专用的剪贴板,以及带有自定义名称的剪贴板,同一个组织里共用同一个团队ID的应用程序开发者,可以在不同的应用程序之间使用这些剪贴板。pasteboardWithUniqueName方法可以创建应用程序专用的剪贴板,该方法所返回的剪贴板对象,会一直延续到应用程序退出时为止。

    pasteboardWithName:create:方法用来创建共享的剪贴板,该方法会返回具备指定名称的剪贴板。create参数的意思是:如果系统里没有这一剪贴板,那么是否应该新建它。创建好剪贴板后,如果把persistent属性设为YES,那它就可以在程序运行完毕后继续保留其数据了。

1、存储数据

    剪贴板中可以存放一项或多项数据。剪贴板中的每项数据,都可以表示成一份包含若干键值对的字典,键值对里存放有数据及其类型。剪贴板里的某项数据,可以含有多份与之相关的条目,以便使其他程序能够找到他们所兼容的数据类型。我们常用UTI来表示数据类型。比方说,可以用pulic.text类型来存放文本数据,可以用public.url类型来保存URL地址,或是用public.jpeg类型来存放图像数据。这都是iOS程序常用的数据类型。

    UIPasteboard提供了一些方法,有的可以处理一个剪贴板条目,有的可以处理多个剪贴板条目,另外还有一些方法用于获取和设置剪贴板数据,以及查询剪贴板中的数据类型。处理单个剪贴板数据所用的那些方法,其中有很多处理都是剪贴板里的首个条目。开发者可以经由items属性获取包含全部条目的数组。

    开发者可以给剪贴板中的首个条目赋予一个NSData对象以及一个描述数据类型的UTI,以便把该条目的数据同类型关联起来:

[[UIPasteboard generalPasteboard] setData:theData forPasteboardType:theUTI];


    另外,对于属性列表的对象来说,可以通过setValue:forPasteboardType:方法把他们放到剪贴板中。这些属性列表的对象的内部存储方式与等效的原始数据不同,这体现了setValue:forPasteboardType:方法与setData:forPasteboardType:方法之间的区别。

2、存储常见类型的数据

    剪贴板为某些数据类型提供了专门的方法,这些数据类型表示几种最常见使用的剪贴板条目。他们是:颜色、图像、字符串及URL。UIPasteboard类提供了专用的设置器与获取器,使得开发者可以更加方便的处理这种数据类型。我们可以将其当成剪贴板的属性,直接以”.“写法来设置并获取他们。另外,每个属性都有一种对应的复数形式,这使得开发者可以经由对象数组来操作它们。

    上面提到的这些剪贴板属性,极大的简化了向系统剪贴板里放置常用数据时所需编写的代码。可供使用的属性有下面这些:

    1、string——把剪贴板中的首个条目当成字符串来设置获取。

    2、strings——把剪贴板中的所有条目当成字符串数组来设置或获取。

    3、image——把剪贴板中的首个条目当成图像来设置或获取。

    4、images——把剪贴板中的所有条目当成图像数组来设置或获取。

    5、URL——把剪贴板中的首个条目当成URL来设置或获取。

    6、URLs——把剪贴板中的所有条目当成URL数组来设置或获取。

    7、color——把剪贴板中的首个条目当成颜色对象来设置或获取

    8、colors——把剪贴板中的所有条目当成颜色对象数组来设置或获取。

3、获取数据

    如果要获取的数据属于前一节所提到的四种类型,那么只需要使用相关的属性即可将其从剪贴板里取出来。否则,需要用dataForPasteboardType:方法来获取。该方法只会返回剪贴板第一个条目里的数据,而忽略剪贴板中的其他条目。

    要想获取与某些类型相符的所有数据,需要调用itemSetWithPasteboardType:方法,并在返回的NSIndexSet上面遍历,以访问其中的每个字典。然后通过字典里的键和值来查明该条目所含的数据类型及数据内容。

    当剪贴板中的数据有变化时,他会发出UIPasteboardChangeNotification通知,开发者可以通过NSNotificationCenter中默认的那些方法来添加监听器,以便监听此通知。另外,也可以监听UIPasteboardRemovedNotification,以便在某 条目移除剪贴板时得到通知。

4、自动更新剪贴板

    坦率的说,iOS的选取与复制界面,并不是整个操作系统里最简洁的UI元件。有时候,为了简化用户的操作流程,我们会把可能要与其他应用程序分享的那些内容提前准备好。

    用户在文本视图里面输入并编辑文本的时候,程序会自动把文本更新到剪贴板。如果enbleWatcher变量处于启用状态,那么每次编辑文本时,程序都会把文本更新到剪贴板。

- (void)updatePastedboard
{
    if (enableWatcher) {
        [UIPasteboard generalPasteboard].string = textView.text;
    }
}

- (void)textViewDidChange:(UITextView *)textView
{
    [self updatePastedboard];
    
}

- (void)toggle:(UIBarButtonItem *)bbi
{
    enableWatcher = !enableWatcher;
    bbi.title  enableWatcher ? @"Stop Watching" : @"Watch";
}

Windows 与 iOS 剪贴板同步方案 通过以上两部分的内容,我们就实现了 Windows 与 iOS 的剪贴板同步,虽然无法与 Apple 全家桶的跨设备体验媲美,有些人也可能难以理解这么麻烦为什么不直接用 Apple 全家桶——也许你是对的,但还是希望大家都能够不被某个品牌的生态所绑架,成为自己设备的主人。t=N3I4这个页面https://sspai.com/link? 阅读详情

相关推荐

iOS开发之详解剪贴板

@interfaceCopyPasteTextController:UIViewController{//用来标识是否显示快捷菜单//点击这个按钮将剪贴板的内容粘贴到title上1、在界面上放置两个uiimageview,一个是图片的数据源,一个是将图片粘贴到的地方。CopyPasteImageViewController代码如下:2、当触摸图片的时候我们显示快捷菜单:这里的快捷菜单,显示三个菜单项:剪贴、粘贴、复制:本文详解了iOS系统应用程序中如何使用剪贴板。

iOS学习—读取粘贴板上的数据,并实现跳转指定界面

iOS读取粘贴板上的数据,并实现跳转指定界面

qq_43441647的博客 2109

WPF 解决listview值更改时页面没有刷新

WPF 解决listview值更改时页面没有刷新。

weixin_52475977的博客 1385

ios开发读取剪切板的内容_iOS开发之详解剪贴板

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

weixin_39675038的博客 2315

浮点数精度陷阱全解析:从IEEE 754到深度学习部署选型

在计算机数值计算中,浮点数是表示带小数数字的标准方式,但它的存储规则决定了精度和边界天生存在限制。许多开发者都曾遭遇过0.1+0.2不等于0.3的尴尬,或是模型训练中loss变成NaN的困扰,这些问题的根源往往指向IEEE 754标准中的规格化、非规格化表示及舍入规则。理解浮点数的底层原理,不仅能避开直接的比较判断陷阱,还能指导我们在不同场景下做出合理的技术选型。从C语言的printf到Python的repr,从嵌入式串口打印到深度学习中的FP32、FP16、BF16、TF32格式,浮点数知识贯穿底层开发和

weixin_34314962的博客 462

高阶玩法——Dify生成的数据自动写入mysql数据库

采用自定义工具方式,利用 python编写一个服务sql_save_post,将接收到的内容写入指定数据库的表中,并为该服务撰写一个 OpenAPI 的 schema。配置工作流:我们以写入天气预报为例,在生成天气预报内容后,连接自定义工具“sql_save_post”,将所需的字段配置完成后,实现将生成的内容自动写入mysql数据库中。编写OpenAPI的schema:在dify平台的工具栏目,创建自定义工具,输入工具名称“sql_save_post”。工具:sql_save_post;

qq_44493378的博客 8539

ios 复制到剪切板的方法代码

UIPasteboard *pasteboard = [UIPasteboard generalPasteboard];       [pasteboard setString:@"张明炜213"];   上面这两句话就实现了,把“张明炜213"复制到剪切板里面了... ...

张明炜 701

WslRegisterDistribution failed with error_ 0x8007019e、0x800701bc、0x80370102

Ubuntu 20.04.4 LTS 报错解决方案。分别涉及到三个错误:WslRegisterDistribution failed with error: 0x8007019e、WslRegisterDistribution failed with error: 0x800701bc和WslRegisterDistribution failed with error: 0x80370102

一起加油~ 5万+

iOS 将内容复制到剪切板

iOS 将内容复制到剪切板     UIPasteboard *pasteboard = [UIPasteboard generalPasteboard];     pasteboard.string = self.resultTextView.text;

soindy 4378

二、租用AutoDL服务器与连接教程

点击右上角控制台,选择【租用新的实例】;,我这里使用的是xshell和xftp工具(自行下载)。打开本地目录和服务器目录,直接拖动文件。

zzf021122的博客 1326

ADS2020实战:村田电感.s2p与.mod文件导入全流程对比(附仿真结果差异分析)

本文详细对比了ADS2020中村田电感的.s2p与.mod文件导入流程及仿真结果差异,重点分析了两种模型在低频段和高频段的精度表现。通过实际案例展示.s2p文件在高频仿真中的优势,以及.mod文件在低频和非线性特性模拟中的准确性,为射频电路设计提供模型选择策略和混合仿真技巧。

weixin_29289821的博客 519

iOS剪贴板

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

培根芝士的专栏 1442

机器学习势能(MLPs) 第一章 基础理论与核心概念 第二章 数据生成与训练集构建

密度泛函理论(DFT)作为现代计算材料科学的基石,通过求解Kohn-Sham方程在电子结构层面提供可靠的势能面信息。然而,其计算复杂度随体系电子数呈O(N3) 至O(N4) 增长,对于包含数百个原子的体系,单点计算往往需消耗数小时至数天的计算资源。这一瓶颈严重限制了分子动力学模拟的时间尺度,传统DFT-MD通常仅能覆盖皮秒量级,远不足以观测扩散、相变等慢动力学过程。经验力场通过解析函数形式描述原子间相互作用,实现了经典力学的计算效率,但其参数化过程高度依赖物理直觉与经验调参。

VectorShift的博客 182

iOS剪贴板同步到Windows剪贴板(无需安装软件的方案)

剪贴板同步能够提高很多的效率,免去复制、发送、复制、粘贴的步骤,只需要在手机上复制,就可以直接在电脑上ctrl+v粘贴,这方面在Apple设备中是做的非常好的,Apple设备之间的剪贴板同步功能(Universal Clipboard)确实非常方便,它可以在和Mac之间无缝传输剪贴板内容,从而大大提高工作效率。但是,iPhone如何和Windows剪贴板同步呢?其实方案有很多,有些是通过安装软件来实现,还有一些是通过输入法自带的剪贴板同步功能来实现,例如微信输入法就有剪贴板同步的功能。

TANKING,开源开发者! 3835

为什么我的 Spark Executor / Yarn Container 只有一个vCore?

在很多集群里,在关闭了Spark的DynamicAllocation的前提下(避免自动申请空闲资源,干扰测试结果),都会观察到:提交Spark作业时,申请 1 个 driver + n 个 executor 会在Yarn上会对应创建 n+1 个 container,但是每个container只有一个vCore,通过--driver-cores和--executor-cores设定的vCore数都未奏效。有人会因此错误的认为Yarn上的一个vCore对应一个Spark的executor,这是非常错误的,正确的

Laurence的技术博客 916

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

Kayoko:iOS 剪贴板管理神器

Kayoko:iOS 剪贴板管理神器 项目介绍 Kayoko 是一款专为 iOS 设备设计的剪贴板管理工具,旨在为用户提供更高效、便捷的剪贴板操作体验。无论你是频繁使用剪贴板的专业人士,还是日常生活中的普通用户,Kayoko 都能帮助你轻松管理剪贴板内容,提升工作效率。 项目技术分析 Kayoko 项目基于 Theos 开发框架,这是一个强大的跨平台开发工具,特别适用于 iOS 和 macOS 的...

gitblog_00461的博客 1168

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

ios实现点击复制文字到剪贴板

移动端点击复制文字到剪贴板: html代码: 复制我到剪贴板 点击复制 复制文字的代码需要放在点击事件中 js代码: $("#button").click(function(){ if (navigator.userAgent.match(/(iPhone|iPod|iPad);?/i)) { //ios var copyDOM = document.query

不知不觉 | 笔记 1万+

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

处理从Unity到iOS和Android的剪贴板

这些是你需要了解的: Unity3D 调用Android与IOS的剪贴板 Unity3D与iOS、Android的交互 我这里主要是讲解这两篇博客结合了一下,改变的地方是将第一篇中安卓交互的方式由导入编译的jar包改为将unity工程导出Android Studio工程,将原生java代码放到as工程里再打包。因为现在公司里面接入SDK和进行原生功能开发都是基于这样的步骤。我这里只讲解流...

kill566666的博客 2091

[转]iOS开发之详解剪贴板

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

zlwonder的专栏 259
上一篇: ios 统一类型标识符
下一篇: ios 约束(一)
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值