UILabel实现剪贴板功能,UIPasteboard、UIMenuController
来源:互联网 发布:js编辑器中文版下载 编辑:程序博客网 时间:2024/05/03 20:15
在开发过程中,只有UITextView,UITextField,和UIWebView才能调用剪贴板,其它控件的剪贴板都被禁用了,要让其他控件也能实现剪贴板的功能,就需要手动实现剪贴板的功能。(这里拿UILabel为例子)
首先需要创建一个类,继承于UILabel。
然后实现以下三个方法:
- (id)init
{
self = [superinit];
if (self) {
[self attachTapHandler];
}
return self;
}
// 可以成为第一响应者
- (BOOL)canBecomeFirstResponder
{
return YES;
}
// 打开你需要的功能, 这里打开了copy,paste,cut,select,delete
- (BOOL)canPerformAction:(SEL)action withSender:(id)sender
{
if (action == @selector(copy:)) {
return YES;
}
if (action == @selector(paste:)) {
return YES;
}
if (action == @selector(cut:)) {
return YES;
}
if (action == @selector(select:)) {
return YES;
}
if (action == @selector(delete:)) {
return YES;
}
return NO;
}
// Label默认是不接收事件的,这里我们给label添加长按手势(在init方法中调用该方法)
- (void)attachTapHandler
{
self.userInteractionEnabled =YES; // 用户交互的总开关
// 初始化一个长按手势,长按时间为0.8f秒
UILongPressGestureRecognizer *longPress = [[UILongPressGestureRecognizeralloc]initWithTarget:selfaction:@selector(longPress:)];
longPress.minimumPressDuration =0.8f;
[selfaddGestureRecognizer:longPress];
}
// 长按手势的响应事件
- (void)longPress:(UILongPressGestureRecognizer *)ges
{
if (ges.state ==UIGestureRecognizerStateBegan) { //长按手势出发时执行
[selfbecomeFirstResponder]; //让Label成为第一响应者
// 创建衣蛾UIMenuController对象
UIMenuController *menu = [UIMenuControllersharedMenuController];
[menusetTargetRect:self.frameinView:self.superview];
[menu setMenuVisible:YESanimated:YES];
}
}
// 实现copy功能
- (void)copy:(id)sender
{
//获取系统剪贴板,并将Label上得文字存入剪贴板中
UIPasteboard *pasteBoard = [UIPasteboardgeneralPasteboard];
pasteBoard.string =self.text;
}
// 实现paste功能
- (void)copy:(id)sender
{
// 获取系统剪贴板,pasteBoard.string即为剪贴板中得内容
UIPasteboard *pasteBoard = [UIPasteboard generalPasteboard];
NSLog(@"%@",pasteBoard.string);
}
- UILabel实现剪贴板功能,UIPasteboard、UIMenuController
- UILabel实现剪贴板功能,UIPasteboard、UIMenuController
- 为UILabel添加弹出UIMenuController功能
- UIMenuController,UIPasteboard:复制,粘贴详解
- IOS剪贴版UIPasteboard/UIMenuController
- UIMenuController UIPasteboard:复制粘贴详解
- [UIPasteboard generalPasteboard]剪贴板的使用
- 剪贴板功能-C++实现
- 对UILabel添加UIMenuController扩展
- IOS学习笔记35——UIPasteboard/UIMenuController(一)
- IOS学习笔记36——UIPasteboard/UIMenuController(二)
- IOS学习笔记37——UIPasteboard/UIMenuController(三)
- UIMenuController和UIMenuItem,即iOS剪贴板
- UIMenuController功能扩展
- 实现网络蚂蚁的实时监视剪贴板功能
- 实现剪贴板复制粘贴功能(原理)
- JS实现复制到剪贴板功能
- 使用ClipboardManager剪贴板实现复制粘贴功能
- VMware虚拟机nat等上网方式一直不能上网的原因
- Java的数据类型:基本数据类型、引用数据类型
- 爪奏撰坠酌缀注座锥做滓驻着走嘴纂缀踪
- mac 下安装 lua环境
- centos修改系统时间
- UILabel实现剪贴板功能,UIPasteboard、UIMenuController
- Property 'aaa' not readable on type com.XXX
- 创新工场投资经理:创业就是九死一生
- 对象序列化的学习
- MySQL多IDC部署注意事项
- Leetcode -- Multiply Strings
- 不只是技术!成为IT经理必备的十大软技能
- android自定义view–绘制顺序及相关原理
- NLS_LANG