




已阅读5页,还剩8页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
iOS软件开发之详解剪贴板在iOS中,可以使用剪贴板实现应用程序之中以及应用程序之间实现数据的共享。比如你可以从iPhone QQ复制一个url,然后粘贴到safari浏览器中查看这个链接的内容。 概述 在iOS中下面三个 在iOS中,可以使用剪贴板实现应用程序之中以及应用程序之间实现数据的共享。比如你可以从iPhone QQ复制一个url,然后粘贴到safari浏览器中查看这个链接的内容。概述在iOS中下面三个控件,自身就有复制-粘贴的功能:1、UITextView2、UITextField3、UIWebViewUIKit framework提供了几个类和协议方便我们在自己的应用程序中实现剪贴板的功能。1、UIPasteboard:我们可以向其中写入数据,也可以读取数据2、UIMenuController:显示一个快捷菜单,用来复制、剪贴、粘贴选择的项。3、UIResponder中的 canPerformAction:withSender:用于控制哪些命令显示在快捷菜单中。4、当快捷菜单上的命令点击的时候,UIResponderStandardEditActions将会被调用。下面这些项能被放置到剪贴板中1、UIPasteboardTypeListString 字符串数组, 包含kUTTypeUTF8PlainText2、UIPasteboardTypeListURL URL数组,包含kUTTypeURL3、UIPasteboardTypeListImage 图形数组, 包含kUTTypePNG 和kUTTypeJPEG4、UIPasteboardTypeListColor 颜色数组剪贴板的类型分为两种:系统级:使用UIPasteboardNameGeneral和UIPasteboardNameFind,系统级应用程序关闭,或者卸载的数据不会丢失。应用程序级:通过设置,可以让数据在应用程序关闭之后仍然保存在剪贴板中,但是应用程序卸载之后数据就会失去。我们可用通过pasteboardWithName:create:来创建。了解这些之后,下面通过一系列的例子来说明如何在应用程序中使用剪贴板。例子:一、复制剪贴文本。 下面通过一个例子,可以在tableview上显示一个快捷菜单,上面只有复制按钮,复制tableview上的数据之后,然后粘贴到title上。定义一个单元格类CopyTableViewCell,在这个类的上显示快捷菜单,实现复制功能。interface CopyTableViewCell : UITableViewCell id delegate;property (nonatomic, retain) id delegate;end实现CopyTableViewCell ,实现粘贴:view plain1. #importCopyTableViewCell.h2. 3. implementationCopyTableViewCell4. 5. synthesizedelegate;6. 7. -(id)initWithStyle:(UITableViewCellStyle)stylereuseIdentifier:(NSString*)reuseIdentifier8. if(self=superinitWithStyle:stylereuseIdentifier:reuseIdentifier)9. 10. returnself;11. 12. -(void)setSelected:(BOOL)selectedanimated:(BOOL)animated13. supersetSelected:selectedanimated:animated;14. 15. -(void)setHighlighted:(BOOL)highlightedanimated:(BOOL)animated16. selfdelegateperformSelector:selector(showMenu:)17. withObject:selfafterDelay:0.9f;18. 19. supersetHighlighted:highlightedanimated:animated;20. 21. 22. -(BOOL)canBecomeFirstResponder23. 24. returnYES;25. 26. -(BOOL)canPerformAction:(SEL)actionwithSender:(id)sender27. if(action=selector(cut:)28. returnNO;29. 30. elseif(action=selector(copy:)31. returnYES;32. 33. elseif(action=selector(paste:)34. returnNO;35. 36. elseif(action=selector(select:)37. returnNO;38. 39. elseif(action=selector(selectAll:)40. returnNO;41. 42. else43. 44. returnsupercanPerformAction:actionwithSender:sender;45. 46. 47. -(void)copy:(id)sender48. UIPasteboard*pasteboard=UIPasteboardgeneralPasteboard;49. pasteboardsetString:selftextLabeltext;50. 51. -(void)dealloc52. superdealloc;53. 54. end定义CopyPasteTextControllerview plain1. interfaceCopyPasteTextController:UIViewController2. /用来标识是否显示快捷菜单3. BOOLmenuVisible;4. UITableView*tableView;5. 6. 7. property(nonatomic,getter=isMenuVisible)BOOLmenuVisible;8. 9. property(nonatomic,retain)IBOutletUITableView*tableView;10. end实现CopyPasteTextController :view plain1. #importCopyPasteTextController.h2. #importCopyTableViewCell.h3. 4. implementationCopyPasteTextController5. synthesizemenuVisible,tableView;6. -(void)viewDidLoad7. superviewDidLoad;8. selfsetTitle:文字复制粘贴;9. /点击这个按钮将剪贴板的内容粘贴到title上10. UIBarButtonItem*addButton=UIBarButtonItemalloc11. initWithBarButtonSystemItem:UIBarButtonSystemItemRefresh12. target:self13. action:selector(readFromPasteboard:)14. autorelease;15. selfnavigationItemsetRightBarButtonItem:addButton;16. 17. 18. 19. /Customizethenumberofsectionsinthetableview.20. -(NSInteger)numberOfSectionsInTableView:(UITableView*)tableView21. 22. return1;23. 24. 25. -(NSInteger)tableView:(UITableView*)tableViewnumberOfRowsInSection:(NSInteger)section26. 27. return9;28. 29. 30. /Customizetheappearanceoftableviewcells.31. -(UITableViewCell*)tableView:(UITableView*)tableViewcellForRowAtIndexPath:(NSIndexPath*)indexPath32. 33. staticNSString*CellIdentifier=Cell;34. CopyTableViewCell*cell=(CopyTableViewCell*)tableView35. dequeueReusableCellWithIdentifier:CellIdentifier;36. if(cell=nil)37. 38. cell=CopyTableViewCellallocinitWithStyle:UITableViewCellStyleDefaultreuseIdentifier:CellIdentifierautorelease;39. cellsetDelegate:self;40. 41. 42. /Configurethecell.43. NSString*text=NSStringstringWithFormat:Row%d,indexPathrow;44. celltextLabelsetText:text;45. returncell;46. 47. 48. -(void)tableView:(UITableView*)tableViewdidSelectRowAtIndexPath:(NSIndexPath*)indexPath49. 50. if(selfisMenuVisible)51. 52. return;53. 54. selftableViewcellForRowAtIndexPath:indexPathsetSelected:YES55. animated:YES;56. 57. /显示菜单58. -(void)showMenu:(id)cell59. if(cellisHighlighted)60. cellbecomeFirstResponder;61. 62. UIMenuController*menu=UIMenuControllersharedMenuController;63. menusetTargetRect:cellframeinView:selfview;64. menusetMenuVisible:YESanimated:YES;65. 66. 67. -(void)readFromPasteboard:(id)sender68. selfsetTitle:NSStringstringWithFormat:Pasteboard=%,69. UIPasteboardgeneralPasteboardstring;70. 71. 72. -(void)didReceiveMemoryWarning73. 74. /Releasestheviewifitdoesnthaveasuperview.75. superdidReceiveMemoryWarning;76. 77. /Relinquishownershipanycacheddata,images,etcthatarentinuse.78. 79. 80. -(void)viewDidUnload81. 82. superviewDidUnload;83. self.tableViewrelease;84. 85. /RelinquishownershipofanythingthatcanberecreatedinviewDidLoadorondemand.86. /Forexample:self.myOutlet=nil;87. 效果:复制一行数据:点击右上角的按钮粘贴,将数据显示在title上:二、图片复制粘贴 下面通过一个例子,将图片复制和剪贴到另外一个UIImageView中间。1、在界面上放置两个uiimageview,一个是图片的数据源,一个是将图片粘贴到的地方。CopyPasteImageViewController 代码如下:view plain1. interfaceCopyPasteImageViewController:UIViewController2. UIImageView*imageView;3. UIImageView*pasteView;4. UIImageView*selectedView;5. 6. property(nonatomic,retain)IBOutletUIImageView*imageView;7. property(nonatomic,retain)IBOutletUIImageView*pasteView;8. property(nonatomic,retain)UIImageView*selectedView;9. -(void)placeImageOnPasteboard:(id)view;10. end2、当触摸图片的时候我们显示快捷菜单:view plain1. -(void)touchesBegan:(NSSet*)toucheswithEvent:(UIEvent*)event2. NSSet*copyTouches=eventtouchesForView:imageView;3. NSSet*pasteTouches=eventtouchesForView:pasteView;4. 5. selfbecomeFirstResponder;6. if(copyTouchescount0)7. selfperformSelector:selector(showMenu:)8. withObject:imageViewafterDelay:0.9f;9. 10. elseif(pasteTouchescount0)11. selfperformSelector:selector(showMenu:)12. withObject:pasteViewafterDelay:0.9f;13. 14. supertouchesBegan:toucheswithEvent:event;15. 16. 17. -(void)showMenu:(id)view18. selfsetSelectedView:view;19. 20. UIMenuController*menu=UIMenuControllersharedMenuController;21. menusetTargetRect:CGRectMake(5,10,1,1)inView:view;22. menusetMenuVisible:YESanimated:YES;23. 这里的快捷菜单,显示三个菜单项:剪贴、粘贴、复制:view plain1. -(BOOL)canPerformAction:(SEL)actionwithSender:(id)sender2. if(action=selector(cut:)3. return(selfselectedView=imageView)?YES:NO;4. elseif(action=selector(copy:)5. return(selfselectedView=imageView)?YES:NO;6. elseif(action=se
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年达州b2考货运资格证要多久
- 2025年六安经营性道路客货运输驾驶员从业资格考试
- 2025年黄冈道路货运驾驶员从业资格证考试题库完整
- 劳动教育在综合育人中的功能发挥
- 化工企业产品品质管理规范
- 父母给十岁孩子的成长寄语与书信撰写指南
- 急性心肌梗死指南
- 【国际清算银行】气候明斯基时刻和内生金融危机-2025.3
- 美容创新创业策划方案
- 硬脊膜动静脉护理
- 外研版五年级英语下册期中测试卷及答案【完整】
- 中药饮片处方点评表-副本(文档良心出品)
- JJF1030-2023温度校准用恒温槽技术性能测试规范
- YYT 1849-2022 重组胶原蛋白
- 米什金货币金融学英文版习题答案chapter1英文习题
- 红色资本家荣毅仁课件
- 酒店贷款报告
- 会计职业道德对职业发展的影响研究
- 体育赛事推广方案
- 子宫肌瘤健康教育指导
- 手术室专案改善活动护理课件
评论
0/150
提交评论