UIMenuController/UIPasteboard(1) 制作一个可以粘贴复制的Label
2015-10-10 17:27
513 查看
效果如下:
苹果只放出来了 UITextView,UITextField,webView三个控件的剪贴板,所以我们要自定义可以复制粘贴的控件,首先需要打开UIResponder的两个方法:
- (BOOL)canBecomeFirstResponder{
return YES;
}
- (BOOL)canPerformAction:(SEL)action withSender:(id)sender
{
if (action == @selector(copy:)) {
return YES;
}
else if (action == @selector(paste:)) {
return YES;
} else if (action == @selector(cut:)) {
return YES;
} else if (action == @selector(select:)) {
return YES;
} else if (action == @selector(delete:)) {
return NO;
}
return NO;
}
OK,开放控件的剪贴板功能已经放出,剩下的就是实现了,话不多说,直接上代码:
在VC中初始化:
OK,运行就可以得到结果了。
苹果只放出来了 UITextView,UITextField,webView三个控件的剪贴板,所以我们要自定义可以复制粘贴的控件,首先需要打开UIResponder的两个方法:
- (BOOL)canBecomeFirstResponder{
return YES;
}
- (BOOL)canPerformAction:(SEL)action withSender:(id)sender
{
if (action == @selector(copy:)) {
return YES;
}
else if (action == @selector(paste:)) {
return YES;
} else if (action == @selector(cut:)) {
return YES;
} else if (action == @selector(select:)) {
return YES;
} else if (action == @selector(delete:)) {
return NO;
}
return NO;
}
OK,开放控件的剪贴板功能已经放出,剩下的就是实现了,话不多说,直接上代码:
// // CanCopyLabel.m // FeixunUniversal // // Created by zpz on 15/10/10. // Copyright (c) 2015年 zpz. All rights reserved. // #import "CanCopyLabel.h" @implementation CanCopyLabel - (instancetype)initWithFrame:(CGRect)frame { self = [super initWithFrame:frame]; if (self) { self.userInteractionEnabled = YES; UITapGestureRecognizer *touch = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTap:)]; [self addGestureRecognizer:touch]; } return self; } - (BOOL)canPerformAction:(SEL)action withSender:(id)sender { if (action == @selector(copy:)) { return YES; } else if (action == @selector(paste:)) { return YES; } else if (action == @selector(cut:)) { return YES; } else if (action == @selector(select:)) { return YES; } else if (action == @selector(delete:)) { return NO; } return NO; } - (void)handleTap:(UIGestureRecognizer *)recognizer { [self becomeFirstResponder]; UIMenuController *menu = [UIMenuController sharedMenuController]; [menu setTargetRect:self.frame inView:self.superview]; [menu setMenuVisible:YES animated:YES]; } - (BOOL)canBecomeFirstResponder{ return YES; } - (void)copy:(id)sender { UIPasteboard *pboard = [UIPasteboard generalPasteboard]; pboard.string = self.text; } - (void)paste:(id)sender { self.textAlignment = UITextAlignmentRight; UIPasteboard *pboard = [UIPasteboard generalPasteboard]; self.text = [NSString stringWithFormat:@"粘贴内容:%@",pboard.string]; NSLog(@"pboard.string : %@",pboard.string); } /* // Only override drawRect: if you perform custom drawing. // An empty implementation adversely affects performance during animation. - (void)drawRect:(CGRect)rect { // Drawing code } */ @end
在VC中初始化:
CanCopyLabel *canLabel = [[CanCopyLabel alloc] initWithFrame:CGRectMake(0, 64, kScreenW, 100)]; canLabel.backgroundColor = [UIColor yellowColor]; canLabel.text = @"我是谁"; canLabel.textColor = [UIColor blueColor]; [self.view addSubview:canLabel];
OK,运行就可以得到结果了。
相关文章推荐
- LEETCODE-Implement Stack using Queues
- NSStringUIImage~NSData的相互转换以及中文转码
- require
- UIImage
- UIViewCotroller 的生命周期函数
- UIScrollView解决touchesBegan等方法不能触发的解方案
- iOS UITextView限制字数
- UI继承图
- UIView 中常见的方法总结
- 采用Visual Stuidio 2010 创建网站栏
- Selenium里WebDriver中窗口的close()与quit()
- uva 1151 Buy or Build (最小生成树)
- DUILIB界面设计技巧:如何设计可切换的TAB页面
- iOS开发UI篇-核心动画简介
- DuiDesigner控件Label无法设置文本对齐属性的BUG解决方案
- DuiDesigner修改:增强选择元素后的用户体验
- DuiDesigner修改:不绘制绿色边框
- easyui datagrid中使用combobox方法
- UILaunchImages
- Generate PDF in Sourcing through concurrent request