iOS剪切板UIPasteboard开发应用解析(二)

本文涉及的产品
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
云解析 DNS,旗舰版 1个月
简介: iOS剪切板UIPasteboard开发应用解析

UIWebView的文字操作

image.png


二、系统的剪切板管理类UIPasteboard


  实际上,当用户通过上面的空间进行复制、剪切等操作时,被选中的内容会被存放到系统的剪切板中,并且这个剪切板并不只能存放字符串数据,其还可以进行图片数据与网址URL数据的存放。这个剪切板就是UIPasteboard类,开发者也可以直接通过它来操作数据进行应用内或应用间传值。


UIPasteboard类有3个初始化方法,如下:


//获取系统级别的剪切板

+ (UIPasteboard *)generalPasteboard;

//获取一个自定义的剪切板 name参数为此剪切板的名称 create参数用于设置当这个剪切板不存在时 是否进行创建

+ (nullable UIPasteboard *)pasteboardWithName:(NSString *)pasteboardName create:(BOOL)create;

//获取一个应用内可用的剪切板

+ (UIPasteboard *)pasteboardWithUniqueName;

上面3个初始化方法,分别获取或创建3个级别不同的剪切板,系统级别的剪切板在整个设备中共享,即是应用程序被删掉,其向系统级的剪切板中写入的数据依然在。自定义的剪切板通过一个特定的名称字符串进行创建,它在应用程序内或者同一开发者开发的其他应用程序中可以进行数据共享。第3个方法创建的剪切板等价为使用第2个方法创建的剪切板,只是其名称字符串为nil,它通常用于当前应用内部。


注意:使用第3个方法创建的剪切板默认是不进行数据持久化的,及当应用程序退出后,剪切板中内容将别抹去。若要实现持久化,需要设置persistent属性为YES。


UIPasteboard中常用方法及属性如下:


//剪切板的名称

@property(readonly,nonatomic) NSString *name;

//根据名称删除一个剪切板

+ (void)removePasteboardWithName:(NSString *)pasteboardName;

//是否进行持久化

@property(getter=isPersistent,nonatomic) BOOL persistent;

//此剪切板的改变次数 系统级别的剪切板只有当设备重新启动时 这个值才会清零

@property(readonly,nonatomic) NSInteger changeCount;

下面这些方法用于设置与获取剪切板中的数据:


最新一组数据对象的存取:


//获取剪切板中最新数据的类型

- (NSArray<NSString *> *)pasteboardTypes;

//获取剪切板中最新数据对象是否包含某一类型的数据

- (BOOL)containsPasteboardTypes:(NSArray<NSString *> *)pasteboardTypes;

//将剪切板中最新数据对象某一类型的数据取出

- (nullable NSData *)dataForPasteboardType:(NSString *)pasteboardType;

//将剪切板中最新数据对象某一类型的值取出

- (nullable id)valueForPasteboardType:(NSString *)pasteboardType;

//为剪切板中最新数据对应的某一数据类型设置值

- (void)setValue:(id)value forPasteboardType:(NSString *)pasteboardType;

//为剪切板中最新数据对应的某一数据类型设置数据

- (void)setData:(NSData *)data forPasteboardType:(NSString *)pasteboardType;

多组数据对象的存取:


//数据组数

@property(readonly,nonatomic) NSInteger numberOfItems;

//获取一组数据对象包含的数据类型

- (nullable NSArray *)pasteboardTypesForItemSet:(nullable NSIndexSet*)itemSet;

//获取一组数据对象中是否包含某些数据类型

- (BOOL)containsPasteboardTypes:(NSArray<NSString *> *)pasteboardTypes inItemSet:(nullable NSIndexSet *)itemSet;

//根据数据类型获取一组数据对象

- (nullable NSIndexSet *)itemSetWithPasteboardTypes:(NSArray *)pasteboardTypes;

//根据数据类型获取一组数据的值

- (nullable NSArray *)valuesForPasteboardType:(NSString *)pasteboardType inItemSet:(nullable NSIndexSet *)itemSet;

//根据数据类型获取一组数据的NSData数据

- (nullable NSArray *)dataForPasteboardType:(NSString *)pasteboardType inItemSet:(nullable NSIndexSet *)itemSet;

//所有数据对象

@property(nonatomic,copy) NSArray *items;

//添加一组数据对象

- (void)addItems:(NSArray<NSDictionary<NSString *, id> *> *)items;

上面方法中很多需要传入数据类型参数,这些参数是系统定义好的一些字符窜,如下:


//所有字符串类型数据的类型定义字符串数组

UIKIT_EXTERN NSArray<NSString *> *UIPasteboardTypeListString;

//所有URL类型数据的类型定义字符串数组

UIKIT_EXTERN NSArray<NSString *> *UIPasteboardTypeListURL;

//所有图片数据的类型定义字符串数据

UIKIT_EXTERN NSArray<NSString *> *UIPasteboardTypeListImage;

//所有颜色数据的类型定义字符串数组

UIKIT_EXTERN NSArray<NSString *> *UIPasteboardTypeListColor;


相比于上面两组方法,下面这些方法更加面向对象,在开发中使用更加方便与快捷:


//获取或设置剪切板中的字符串数据

@property(nullable,nonatomic,copy) NSString *string;

//获取或设置剪切板中的字符串数组

@property(nullable,nonatomic,copy) NSArray<NSString *> *strings;

//获取或设置剪切板中的URL数据

@property(nullable,nonatomic,copy) NSURL *URL;

//获取或设置剪切板中的URL数组

@property(nullable,nonatomic,copy) NSArray<NSURL *> *URLs;

//获取或s何止剪切板中的图片数据

@property(nullable,nonatomic,copy) UIImage *image;

//获取或设置剪切板中的图片数组

@property(nullable,nonatomic,copy) NSArray<UIImage *> *images;

//获取或设置剪切板中的颜色数据

@property(nullable,nonatomic,copy) UIColor *color;

//获取或设置剪切板中的颜色数组

@property(nullable,nonatomic,copy) NSArray<UIColor *> *colors;

对剪切板的某些操作会触发如下通知:


//剪切板内容发生变化时发送的通知

UIKIT_EXTERN NSString *const UIPasteboardChangedNotification;

//剪切板数据类型键值增加时发送的通知

UIKIT_EXTERN NSString *const UIPasteboardChangedTypesAddedKey;

//剪切板数据类型键值移除时发送的通知

UIKIT_EXTERN NSString *const UIPasteboardChangedTypesRemovedKey;

//剪切板被删除时发送的通知

UIKIT_EXTERN NSString *const UIPasteboardRemovedNotification;

 

目录
相关文章
|
7天前
|
机器学习/深度学习 人工智能 自然语言处理
AI技术深度解析:从基础到应用的全面介绍
人工智能(AI)技术的迅猛发展,正在深刻改变着我们的生活和工作方式。从自然语言处理(NLP)到机器学习,从神经网络到大型语言模型(LLM),AI技术的每一次进步都带来了前所未有的机遇和挑战。本文将从背景、历史、业务场景、Python代码示例、流程图以及如何上手等多个方面,对AI技术中的关键组件进行深度解析,为读者呈现一个全面而深入的AI技术世界。
61 10
|
17天前
|
安全 前端开发 Android开发
探索移动应用与系统:从开发到操作系统的深度解析
在数字化时代的浪潮中,移动应用和操作系统成为了我们日常生活的重要组成部分。本文将深入探讨移动应用的开发流程、关键技术和最佳实践,同时分析移动操作系统的核心功能、架构和安全性。通过实际案例和代码示例,我们将揭示如何构建高效、安全且用户友好的移动应用,并理解不同操作系统之间的差异及其对应用开发的影响。无论你是开发者还是对移动技术感兴趣的读者,这篇文章都将为你提供宝贵的见解和知识。
|
23天前
|
存储 缓存 监控
后端开发中的缓存机制:深度解析与最佳实践####
本文深入探讨了后端开发中不可或缺的一环——缓存机制,旨在为读者提供一份详尽的指南,涵盖缓存的基本原理、常见类型(如内存缓存、磁盘缓存、分布式缓存等)、主流技术选型(Redis、Memcached、Ehcache等),以及在实际项目中如何根据业务需求设计并实施高效的缓存策略。不同于常规摘要的概述性质,本摘要直接点明文章将围绕“深度解析”与“最佳实践”两大核心展开,既适合初学者构建基础认知框架,也为有经验的开发者提供优化建议与实战技巧。 ####
|
18天前
|
机器学习/深度学习 搜索推荐 API
淘宝/天猫按图搜索(拍立淘)API的深度解析与应用实践
在数字化时代,电商行业迅速发展,个性化、便捷性和高效性成为消费者新需求。淘宝/天猫推出的拍立淘API,利用图像识别技术,提供精准的购物搜索体验。本文深入探讨其原理、优势、应用场景及实现方法,助力电商技术和用户体验提升。
|
20天前
|
存储 安全 数据安全/隐私保护
深入解析iOS 14隐私保护功能:用户数据安全的新里程碑
随着数字时代的到来,个人隐私保护成为全球关注的焦点。苹果公司在最新的iOS 14系统中引入了一系列创新的隐私保护功能,旨在为用户提供更透明的数据使用信息和更强的控制权。本文将深入探讨iOS 14中的几项关键隐私功能,包括App跟踪透明性、简化的隐私设置以及增强的系统安全性,分析它们如何共同作用以提升用户的隐私保护水平。
68 3
|
21天前
|
Java 调度 Android开发
安卓与iOS开发中的线程管理差异解析
在移动应用开发的广阔天地中,安卓和iOS两大平台各自拥有独特的魅力。如同东西方文化的差异,它们在处理多线程任务时也展现出不同的哲学。本文将带你穿梭于这两个平台之间,比较它们在线程管理上的核心理念、实现方式及性能考量,助你成为跨平台的编程高手。
|
24天前
|
编译器 PHP 开发者
PHP 8新特性解析与实战应用####
随着PHP 8的发布,这一经典编程语言迎来了诸多令人瞩目的新特性和性能优化。本文将深入探讨PHP 8中的几个关键新功能,包括命名参数、JIT编译器、新的字符串处理函数以及错误处理改进等。通过实际代码示例,展示如何在现有项目中有效利用这些新特性来提升代码的可读性、维护性和执行效率。无论你是PHP新手还是经验丰富的开发者,本文都将为你提供实用的技术洞察和最佳实践指导。 ####
28 1
|
25天前
|
数据安全/隐私保护 iOS开发 开发者
iOS 14隐私保护新特性深度解析####
随着数字时代的到来,隐私保护已成为全球用户最为关注的问题之一。苹果在最新的iOS 14系统中引入了一系列创新功能,旨在增强用户的隐私和数据安全。本文将深入探讨iOS 14中的几大隐私保护新特性,包括App跟踪透明度、剪贴板访问通知和智能防追踪功能,分析这些功能如何提升用户隐私保护,并评估它们对开发者和用户体验的影响。 ####
|
24天前
|
前端开发 Android开发 UED
移动应用与系统:从开发到优化的全面解析####
本文深入探讨了移动应用开发的全过程,从最初的构思到最终的发布,并详细阐述了移动操作系统对应用性能和用户体验的影响。通过分析当前主流移动操作系统的特性及差异,本文旨在为开发者提供一套全面的开发与优化指南,确保应用在不同平台上均能实现最佳表现。 ####
24 0
|
25天前
|
存储 供应链 算法
深入解析区块链技术的核心原理与应用前景
深入解析区块链技术的核心原理与应用前景
49 0

推荐镜像

更多