国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

iOS開發應用剪貼板功能教程

移動開發 iOS
本文介紹的是IOS應用中的剪貼板的功能實現,很詳細的講解了所使用的類和控件等內容,代碼實現,來看詳細內容。

iOS開發應用剪貼板功能教程是本文要介紹的內容,在iOS中,可以使用剪貼板實現應用程序之中以及應用程序之間實現數據的共享。比如你可以從iPhone QQ復制一個url,然后粘貼到safari瀏覽器中查看這個鏈接的內容。

一、在iOS中下面三個控件,自身就有復制-粘貼的功能:

1、UITextView

2、UITextField

3、UIWebView

二、UIKit framework提供了幾個類和協議方便我們在自己的應用程序中實現剪貼板的功能。

1、UIPasteboard:我們可以向其中寫入數據,也可以讀取數據

2、UIMenuController:顯示一個快捷菜單,用來復制、剪貼、粘貼選擇的項。

3、UIResponder中的 canPerformAction:withSender:用于控制哪些命令顯示在快捷菜單中。

4、當快捷菜單上的命令點擊的時候,UIResponderStandardEditActions將會被調用。

三、下面這些項能被放置到剪貼板中

1、UIPasteboardTypeListString —  字符串數組, 包含kUTTypeUTF8PlainText

2、UIPasteboardTypeListURL —   URL數組,包含kUTTypeURL

3、UIPasteboardTypeListImage —   圖形數組, 包含kUTTypePNG 和kUTTypeJPEG

4、UIPasteboardTypeListColor —   顏色數組

四、剪貼板的類型分為兩種:

系統級:使用UIPasteboardNameGeneral和UIPasteboardNameFind創建,系統級的剪貼板,當應用程序關閉,或者卸載時,數據都不會丟失。

應用程序級:通過設置,可以讓數據在應用程序關閉之后仍然保存在剪貼板中,但是應用程序卸載之后數據就會失去。我們可用通過pasteboardWithName:create:來創建。

了解這些之后,下面通過一系列的例子來說明如何在應用程序中使用剪貼板。

例子:

1、復制剪貼文本。

下面通過一個例子,可以在tableview上顯示一個快捷菜單,上面只有復制按鈕,復制tableview上的數據之后,然后粘貼到title上。

定義一個單元格類CopyTableViewCell,在這個類的上顯示快捷菜單,實現復制功能。

  1. @interface CopyTableViewCell : UITableViewCell {     
  2.  id delegate;}@property (nonatomic, retain) id delegate;  
  3.  @end 

實現CopyTableViewCell :

  1. #import "CopyTableViewCell.h"@implementation CopyTableViewCell@synthesize delegate;  
  2. - (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier   
  3. {     
  4.  if ((self = [super initWithStyle:style reuseIdentifier:reuseIdentifier])) { }    
  5.    return self;  
  6. }  
  7. - (void)setSelected:(BOOL)selected animated:(BOOL)animated {   
  8.    [super setSelected:selected animated:animated];  
  9. }  
  10. - (void)setHighlighted:(BOOL)highlighted animated:(BOOL)animated {    
  11.   [[self delegate] performSelector:@selector(showMenu:)                
  12.            withObject:self afterDelay:0.9f];         
  13.            [super setHighlighted:highlighted animated:animated];  
  14. }  
  15. - (BOOL)canBecomeFirstResponder {   
  16.    return YES;  
  17. }  
  18. - (BOOL)canPerformAction:(SEL)action withSender:(id)sender{   
  19.    if (action == @selector(cut:)){   
  20.     return NO;  
  21. }  else if(action == @selector(copy:)){      
  22.     return YES;    
  23.  }       
  24.  else if(action == @selector(paste:)){   
  25.     return NO;    
  26. }       
  27. else if(action == @selector(select:)){     
  28.      return NO;    
  29.  }      
  30.   else if(action == @selector(selectAll:)){      
  31.  return NO;    
  32. }    else  {     
  33.   return [super canPerformAction:action withSender:sender];    
  34. }  
  35. }  
  36. - (void)copy:(id)sender {    
  37.   UIPasteboard *pasteboard = [UIPasteboard generalPasteboard];     
  38.   [pasteboard setString:[[self textLabel]text]];  
  39.  }  
  40. - (void)dealloc {    
  41.   [super dealloc];  
  42. }  
  43. @end 

定義CopyPasteTextController,實現粘貼功能。

  1. @interface CopyPasteTextController : UIViewController<UITableViewDelegate>   
  2. {      
  3. //用來標識是否顯示快捷菜單      
  4. BOOL menuVisible;      
  5. UITableView *tableView;  
  6. }  
  7. @property (nonatomic, getter=isMenuVisible) BOOL menuVisible;  
  8. @property (nonatomic, retain) IBOutlet UITableView *tableView;  
  9. @end  

實現CopyPasteTextController :

  1. #import "CopyPasteTextController.h"  
  2. #import "CopyTableViewCell.h"  
  3. @implementation CopyPasteTextController  
  4. @synthesize menuVisible,tableView;  
  5. - (void)viewDidLoad {      
  6. [super viewDidLoad];     
  7.  [self setTitle:@"文字復制粘貼"]; //點擊這個按鈕將剪貼板的內容粘貼到title上      
  8.  UIBarButtonItem *addButton = [[[UIBarButtonItem alloc]               
  9.   initWithBarButtonSystemItem:UIBarButtonSystemItemRefresh      
  10.     target:self  
  11.      action:@selector(readFromPasteboard:)]  
  12.      autorelease];      
  13.  [[self navigationItem] setRightBarButtonItem:addButton];  
  14.  }  
  15.  // Customize the number of sections in the table view.  
  16.  - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{   
  17.     return 1;  
  18.  }  
  19.  - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{    
  20.    return 9;}// Customize the appearance of table view cells.  
  21.    - (UITableViewCell *)tableView:(UITableView *)tableView   
  22.    cellForRowAtIndexPath:(NSIndexPath *)indexPath{    
  23.   static NSString *CellIdentifier =@"Cell";    
  24.     CopyTableViewCell *cell = (CopyTableViewCell *)  
  25.     [tableView   dequeueReusableCellWithIdentifier:CellIdentifier];    
  26.       if (cell == nil)     {        
  27.         cell = [[[CopyTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];    
  28.               [cell setDelegate:self];  
  29.       }        
  30.         // Configure the cell.     
  31.       NSString *text = [NSString stringWithFormat:@"Row %d", [indexPath row]];   
  32.          [[cell textLabel] setText:text];     
  33.           return cell;  
  34. }  
  35. - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{    
  36.   if([self isMenuVisible])    {        
  37.     return;   
  38.  }     
  39.   [[[self tableView] cellForRowAtIndexPath:indexPath] setSelected:YES                           
  40.                                  animated:YES];}//顯示菜單- (void)showMenu:(id)cell {    
  41.     if ([cell isHighlighted]) {      
  42.         [cell becomeFirstResponder];  
  43.        UIMenuController * menu = [UIMenuController sharedMenuController];  
  44.       [menu setTargetRect: [cell frame] inView: [self view]];   
  45.    [menu setMenuVisible: YES animated: YES];  
  46.  }  
  47.  }  
  48. - (void)readFromPasteboard:(id)sender {    
  49.   [self setTitle:[NSString stringWithFormat:@"Pasteboard = %@",[[UIPasteboard generalPasteboard] string]]];  
  50. }  
  51. - (void)didReceiveMemoryWarning{     
  52.  // Releases the view if it doesn't have a superview. [super didReceiveMemoryWarning];   
  53.         // Relinquish ownership any cached data, images, etc that aren't in use.  
  54.     }  
  55.  - (void)viewDidUnload{      
  56.  [super viewDidUnload];     
  57.   [self.tableView release];   
  58.   // Relinquish ownership of anything that can be recreated in viewDidLoad or on demand.     
  59.    // For example: self.myOutlet = nil;  

效果:

iOS開發應用剪貼板功能教程

復制一行數據:

iOS開發應用剪貼板功能教程

點擊右上角的按鈕粘貼,將數據顯示在title上:

#p#

2、圖片復制粘貼

下面通過一個例子,將圖片復制和剪貼到另外一個UIImageView中間。

1、在界面上放置兩個uiimageview,一個是圖片的數據源,一個是將圖片粘貼到的地方。CopyPasteImageViewController 代碼如下:

  1. @interface CopyPasteImageViewController : UIViewController {     
  2.  UIImageView *imageView;      
  3.  UIImageView *pasteView;     
  4.   UIImageView *selectedView;  
  5. }@property (nonatomic, retain) IBOutlet UIImageView *imageView;  
  6. @property (nonatomic, retain) IBOutlet UIImageView *pasteView;  
  7. @property (nonatomic, retain) UIImageView *selectedView;  
  8. - (void)placeImageOnPasteboard:(id)view;  
  9. @end 

2、當觸摸圖片的時候我們顯示快捷菜單:

  1. - (void)touchesBegan:(NSSet*)touches withEvent:(UIEvent*)event {      
  2. NSSet *copyTouches = [event touchesForView:imageView];      
  3. NSSet *pasteTouches = [event touchesForView:pasteView];          
  4. [self becomeFirstResponder];      
  5. if ([copyTouches count] > 0) {     
  6.      [self performSelector:@selector(showMenu:)   
  7.       withObject:imageView afterDelay:0.9f];   
  8.  }    
  9.    else  if([pasteTouches count] > 0) {    
  10.          [self performSelector:@selector(showMenu:)          
  11.         withObject:pasteView afterDelay:0.9f];   
  12.  }     
  13.   [super touchesBegan:touches withEvent:event];  
  14. }  
  15. - (void)showMenu:(id)view {   
  16.    [self setSelectedView:view];   
  17.   UIMenuController * menu = [UIMenuController sharedMenuController];    
  18.     [menu setTargetRect: CGRectMake(5, 10, 1, 1) inView: view];     
  19.  [menu setMenuVisible: YES animated: YES];} 

這里的快捷菜單,顯示三個菜單項:剪貼、粘貼、復制:

  1. - (BOOL)canPerformAction:(SEL)action withSender:(id)sender{  
  2.     if (action == @selector(cut:)) {          
  3.     return ([self selectedView] == imageView) ? YES : NO;  
  4.  } else if (action == @selector(copy:)) {          
  5.       return ([self selectedView] == imageView) ? YES : NO;  
  6.  } else if (action == @selector(paste:)) {      
  7.      return ([self selectedView] == pasteView) ? YES : NO;  
  8.  } else if (action == @selector(select:)) {    
  9.        return NO;      
  10. } else if (action == @selector(selectAll:)) {      
  11.     return NO;      
  12.  } else {       
  13.        return [super canPerformAction:action withSender:sender];  
  14.    }  
  15.  }  
  16.  - (void)cut:(id)sender {     
  17.   [self copy:sender];     
  18.    [imageView setHidden:YES];  
  19. }  
  20. - (void)copy:(id)sender {    
  21.   [self placeImageOnPasteboard:[self imageView]];  
  22. }  
  23. - (void)paste:(id)sender {     
  24.  UIPasteboard *appPasteBoard =[UIPasteboard pasteboardWithName:@"CopyPasteImage" create:YES];      
  25.  NSData *data =[appPasteBoard dataForPasteboardType:@"com.marizack.CopyPasteImage.imageView"];     
  26.   pasteView.image = [UIImage imageWithData:data];  

效果:

1、點擊圖片,顯示菜單按鈕。

iOS開發應用剪貼板功能教程

2、點擊復制,將數據復制到剪貼板上:

iOS開發應用剪貼板功能教程

3、點擊粘貼,將數據粘貼到uiimageview上。

iOS開發應用剪貼板功能教程

小結:iOS開發應用剪貼板功能教程的內容介紹完了,希望通過本文的學習對你有所幫助!

責任編輯:zhaolei 來源: 博客園
相關推薦

2009-12-18 14:10:29

Ruby訪問剪貼板

2010-02-02 17:47:59

C++操作剪貼板

2024-04-09 08:27:01

Android高效管理數據

2022-03-31 22:53:47

Windows 11太陽谷2智能剪貼板

2021-12-05 09:28:18

Windows 11操作系統微軟

2021-12-12 09:42:48

Windows 11桌面微軟

2021-07-29 09:55:59

鴻蒙HarmonyOS應用

2020-12-14 05:57:01

clipboard.Selection execCommand

2009-08-10 17:37:54

2020-07-02 07:53:59

App操作系統應用

2021-12-02 10:11:44

鴻蒙HarmonyOS應用

2020-10-12 09:40:57

Windows 10Windows操作系統

2016-05-11 15:01:31

Linux剪貼板管理器

2021-08-29 07:43:43

CopyQ操作系統微軟

2023-02-06 07:17:22

2018-03-23 10:15:28

Windows 10云剪貼板復制粘貼

2025-06-23 08:30:00

webAPI剪貼板

2021-08-03 07:06:54

Windows 11操作系統微軟

2021-11-30 05:37:51

App監聽手機監管

2021-03-09 05:48:01

Windows10操作系統21H2
點贊
收藏

51CTO技術棧公眾號

成人av在线播放观看| 亚洲日本视频| 欧美另类极品videosbest最新版本| 国产香蕉久久| 久久人人爽人人爽人人片av高请| 理论片一区二区在线| 国产精品美女免费| 亚洲精品免费观看| 成人免费看片'免费看| 国产精品人成在线观看免费| 在线资源av| 精品999在线播放| 亚洲美女色播| 国产在线观看精品| 久久九九99| av动漫在线观看| 精品久久久久久久久中文字幕 | 黄色片视频在线播放| 亚洲欧美电影一区二区| 成年人视频免费在线观看| 日韩精品久久久久久久玫瑰园| 亚洲日本一区二区三区在线| 999国内精品视频在线| 国产在线精品不卡| 午夜刺激在线| 国产视频一区在线| 国产免费av一区二区三区| 日韩欧美国产二区| 国产精品久久777777| 国产福利视频在线| 欧美激情一区二区久久久| 亚洲三级网站| 日韩爱爱小视频| 日韩三级视频中文字幕| 精品视频国内| 欧美国产一二三区| 亚洲少妇中出一区| 自由日本语热亚洲人| 国产一区香蕉久久| 99麻豆久久久国产精品免费| 成a人v在线播放| 欧美激情中文网| 午夜亚洲一区| 国产xxxxx| 国产亚洲成av人片在线观看桃| 亚洲国产一区二区在线观看| 久久精品国产精品亚洲色婷婷| 欧美丰满少妇xxxbbb| 九九久久婷婷| 欧美成人一区二区在线观看| 欧美午夜精品一区| 窝窝社区一区二区| 日本a级片在线观看| 欧美日韩国产影片| 九九久久精品| 狠狠爱免费视频| 亚洲国语精品自产拍在线观看| 一区二区三区四区在线观看国产日韩 | 浅井舞香一区二区| 成人性生交大片| 宅男网站在线免费观看| 国产一区二中文字幕在线看| 国产喂奶挤奶一区二区三区| 亚洲精品日产| 欧美午夜精品久久久久免费视| 婷婷开心久久网| 日韩美女毛片| 午夜激情在线观看视频| 日韩av最新在线观看| 国产精品亚洲综合久久| 亚洲成人av高清| 欧美一区二区三区精品电影| 2024国产精品| 91另类视频| 国产91在线亚洲| 国产丝袜精品视频| 久久国产婷婷国产香蕉| 性欧美高清come| 精品国产综合久久| 欧美亚洲动漫精品| 欧美国产精品| 欧美精品久久久久久久久久丰满| 国产精品成人久久久久| 最新久久zyz资源站| 韩国精品福利一区二区三区| 粉嫩虎白女毛片人体| xxxxxxxxx欧美| av日韩在线网站| 亚洲午夜国产成人| 91成人在线观看喷潮教学| 在线看片第一页欧美| 福利91精品一区二区三区| 午夜激情在线播放| 欧美黄色免费网址| 中文在线不卡视频| 波多野洁衣一区| 成人在线精品| 亚洲一级片网站| 97精品欧美一区二区三区| 国产精品乱码妇女bbbb| 久久精品国产亚洲5555| av电影资源| 成人亚洲综合色就1024| 色欧美乱欧美15图片| 99亚洲精品| 成人性生交大片免费看网站| 久久国产精品免费观看| 色av中文字幕一区| 91麻豆国产福利在线观看| 亚洲一区 二区| 神马午夜dy888| 99精彩视频| 日韩精品一区二区三区视频在线观看 | 精品欧美不卡一区二区在线观看| 亚洲wwwav| 欧美日韩电影在线播放| 免费看日韩精品| 欧美极品在线| baoyu777.永久免费视频| 亚洲影院色在线观看免费| 制服丝袜一区二区三区| 国产一区二区三区高清播放| 国产精品白丝久久av网站| 高清hd写真福利在线播放| 成人h视频在线| 日韩欧美的一区| 成人性视频免费网站| 牛牛视频精品一区二区不卡| 色视频在线观看| 亚洲精品久久区二区三区蜜桃臀 | 亚洲一区不卡在线| 久久久91精品国产| 亚洲激情图片qvod| 国产日韩欧美三区| 成人毛片免费| 美女网站在线| 欧美激情视频一区二区三区| 中国人与牲禽动交精品| 一区二区成人在线观看| 国产精品夜夜夜| 24小时成人在线视频| 黄页网址大全在线观看| 性刺激综合网| 欧美一区在线直播| 日韩一级大片在线观看| 国产性做久久久久久| 欧美精品入口| 国产资源一区| 精品无人乱码| 亚洲 高清 成人 动漫| 成人欧美一区二区三区黑人| 国产网站欧美日韩免费精品在线观看 | gogogo免费视频观看亚洲一| 欧美日韩一二| 高清毛片在线观看| 激情视频免费| 在线码字幕一区| 国产精品国产三级国产专播精品人| 精品伦理精品一区| 亚洲免费电影在线| 国产一区啦啦啦在线观看| 日本不卡电影| 国内自拍亚洲| 久久综合网导航| 91污色多多| 久久天天东北熟女毛茸茸| 国产经典一区二区| 伊人久久五月天| 欧美日韩一区三区四区| 国产精品女人毛片| 麻豆精品国产91久久久久久| 91久久夜色精品国产按摩| 日韩欧乱色一区二区三区在线 | 精品乱码亚洲一区二区不卡| 一区二区三区精品| 福利视频网站一区二区三区| 亚洲福利一区| 国产99亚洲| 亚洲青青久久| 七七成人影院| 日韩欧美在线番号| 97cao在线| 久久久一本二本三本| 五月天亚洲综合| 99久久精品无码一区二区毛片 | 午夜精品网站| 伊人久久大香线蕉| 国产精品一区二区精品| 国产亚av手机在线观看| 欧美理论在线观看| jizzjizz亚洲中国少妇| 日本熟妇人妻中出| 农民人伦一区二区三区| 亚洲精品美女久久7777777| 国产精品久久久久久久小唯西川| 日韩av免费在线播放| 欧美黄网免费在线观看| 日韩视频在线免费| 在线成人中文字幕| 亚洲精品一区二区三区不|