iOS开发之复制粘贴 剪切
来源:互联网 发布:unity3d 节点 编辑:程序博客网 时间:2024/06/05 10:55
- UIPasteboard:剪切板 用来向其中写入数据以及从中读取数据,从来实现数据的”搬迁”。
- UIMenuController:编辑菜单 用来显示拷贝、黏贴等命令
- canPerformAction:withSender::用于控制编辑菜单显示的命令按钮。事实上,编辑菜单的命令按钮完全可以自定义,而无需通过实现canPerformAction:方法来控制命令按钮。
- UIResponderStandardEditActions:一个非正式协议(UIResponder的类别),申明了几个编辑动作,例如copy:等等。当编辑菜单上的命令被点击时,相关方法会被调用。系统未实现这个方法,必须override!
//长按cell时是否显示编辑菜单
- (BOOL)tableView:(UITableView *)tableView shouldShowMenuForRowAtIndexPath:(NSIndexPath *)indexPath {
if (indexPath.section ==0 && indexPath.row !=0) {
return YES;
}
return NO;
}
//控制编辑菜单中的按钮
- (BOOL)tableView:(UITableView *)tableView canPerformAction:(SEL)action forRowAtIndexPath:(NSIndexPath *)indexPath withSender:(id)sender {
if (action == @selector(copy:)) {
return YES;
}
return NO;
}
//执行编辑菜单中点击的按钮动作
- (void)tableView:(UITableView *)tableView performAction:(SEL)action forRowAtIndexPath:(NSIndexPath *)indexPath withSender:(id)sender {
if (action == @selector(copy:)) {
UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
[UIPasteboardgeneralPasteboard].string = cell.textLabel.text;
}
}
- (instancetype)initWithFrame:(CGRect)frame {
self = [superinitWithFrame:frame];
if (self) {
self.userInteractionEnabled =YES;
UILongPressGestureRecognizer *longPressGestureRecognizer = [[UILongPressGestureRecognizeralloc]initWithTarget:selfaction:@selector(actionShowMenu:)];
[self addGestureRecognizer:longPressGestureRecognizer];
}
return self;
}
- (void)actionShowMenu:(UILongPressGestureRecognizer *)recognizer {
if (recognizer.state ==UIGestureRecognizerStateBegan) {
[selfbecomeFirstResponder];
UIMenuController *menu = [UIMenuControllersharedMenuController];
//这里可以自定义
// UIMenuItem *copyItem = [[UIMenuItem alloc] initWithTitle:@"复制" action:@selector(menuCopyBtnPressed:)];
//
// menuController.menuItems = @[copyItem];
[menu setTargetRect:CGRectMake([recognizerlocationInView:self].x, [recognizerlocationInView:self].y,0,0)inView:self];
[menu setMenuVisible:YESanimated:YES];
}
}
//允许成为第一响应
- (BOOL)canBecomeFirstResponder{
return YES;
}
- (void)copy:(id)sender{
[UIPasteboard generalPasteboard].string =self.text;
}
- (void)cut:(id)sender{
[UIPasteboard generalPasteboard].string =self.text;
self.text =nil;
}
- (void)paste:(id)sender{
self.text = [UIPasteboardgeneralPasteboard].string;
}
// 用于控制哪些命令显示在编辑菜单中
- (BOOL)canPerformAction:(SEL)action withSender:(id)sender{
if (action == @selector(copy:)) {
return YES;
}else if (action ==@selector(cut:)){
return YES;
}else if (action ==@selector(paste:)){
return YES;
}
return [supercanPerformAction:actionwithSender:sender];
}
- iOS开发之复制粘贴 剪切
- ios开发之----复制和粘贴
- android 复制、剪切、粘贴
- android 复制、剪切、粘贴
- android 复制、剪切、粘贴
- android 复制,剪切,粘贴
- vi复制粘贴剪切
- IOS手机中图片的复制粘贴,剪切
- Eclipse插件开发 实现 复制 粘贴 剪切功能
- vim 的复制粘贴剪切
- Linux文件剪切复制粘贴
- 复制--剪切--粘贴实际流程
- vim 复制粘贴和剪切
- 实现文本编辑象复制,粘贴,剪切
- 图元“复制”“剪切”“粘贴”代码
- emacs中如何复制、剪切、粘贴
- 急求【剪切、复制、粘贴】功能代码
- C#RichTextBox实现(复制, 剪切,粘贴,全选)
- css页面展示时间和超时提醒
- Linux性能评测工具之一:gprof篇
- OpenStack-M版(Mitaka)搭建基于(Centos7.2)+++十、Openstack对象存储服务(swift)完成安装
- Java设计模式百例
- 关于 Notice: Undefined index: 2 in C:\wamp\www\...报错
- iOS开发之复制粘贴 剪切
- 多线程编程
- Boostrap-datetimepicker 日期时间选择器————时间制约
- android 自动打包测试
- DNS测试bat脚本分析
- PostgreSQL on ECS SLA 流复制备库+秒级快照+PITR+自动清理
- mysql大数据量使用limit分页,随着页码的增大,查询效率越低下。
- json文件和xml文件
- weblogic数据源和应用部署