你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發綜合 >> iOS長按UIlabel完成可復制功效

iOS長按UIlabel完成可復制功效

編輯:IOS開發綜合

媒介

信任年夜家都曉得在IOS中有三個控件本身是支撐拷貝,粘貼的,如:UITextField,UITextView,UIWebView。然則,有時刻我們會碰到須要長按UIlabel,彈出“復制”item,來完成可復制。那該怎樣辦呢?上面就來一路看看吧。

起首UIKit中供給給我們幾個類

在開端之前,我們須要自界說一個WinCopyLabel繼續UILable

- (instancetype)initWithFrame:(CGRect)frame {
 if (self = [super initWithFrame:frame]) {
  [self pressAction];
 }
 return self;
}
// 初始化設置
- (void)pressAction {
 self.userInteractionEnabled = YES;
 UILongPressGestureRecognizer *longPress = [[UILongPressGestureRecognizer alloc] initWithtarget:self action:@selector(longPressAction:)];
 longPress.minimumPressDuration = 1;
 [self addGestureRecognizer:longPress];
}

1、UIResponder:經由過程這個類完成UILabel可以呼應事宜(我們曉得UIlabel是不克不及成為呼應者的,所以這裡須要重寫),掌握須要呼應的事宜

 // 使label可以或許成為呼應事宜
 - (BOOL)canBecomeFirstResponder {
  return YES;
 }
 // 掌握呼應的辦法
 - (BOOL)canPerformAction:(SEL)action withSender:(id)sender {
  return action == @selector(customCopy:);
 }

2、UIPasteboard:該類支撐寫入和讀取數據,相似剪貼板

 - (void)customCopy:(id)sender {
 UIPasteboard *pasteboard = [UIPasteboard generalPasteboard];
 pasteboard.string = self.text;
 }

3、UIMenuController:可以經由過程這個類完成在點擊內容,或許長按內容時展現出復制、剪貼、粘貼等選擇的項,每一個選項都是一個UIMenuItem對象

- (void)longPressAction:(UIGestureRecognizer *)recognizer {
 [self becomeFirstResponder];
 UIMenuItem *copyItem = [[UIMenuItem alloc] initWithTitle:@"拷貝" action:@selector(customCopy:)];
 [[UIMenuController sharedMenuController] setMenuItems:[NSArray arrayWithObjects:copyItem, nil]];
 [[UIMenuController sharedMenuController] setTargetRect:self.frame inView:self.superview];
 [[UIMenuController sharedMenuController] setMenuVisible:YES animated:YES];
}

彌補:

1、UIResponderStandardEditActions:這是蘋果給NSObject寫的一個分類,個中包括了我們經常使用的復制,粘貼,全選等辦法

 - (void)cut:(nullable id)sender  NS_AVAILABLE_IOS(3_0);
 - (void)copy:(nullable id)sender  NS_AVAILABLE_IOS(3_0);
 - (void)paste:(nullable id)sender  NS_AVAILABLE_IOS(3_0);
 - (void)select:(nullable id)sender  NS_AVAILABLE_IOS(3_0);
 - (void)selectAll:(nullable id)sender  NS_AVAILABLE_IOS(3_0);
 - (void)delete:(nullable id)sender   NS_AVAILABLE_IOS(3_2);

當我們,選中彈出的item時,體系會挪用下面對應的辦法

2、.以下是剪貼板中可以放置的內容(除字符串,也能夠拷貝圖片,URL等)

      1.UIPasteboardTypeListString 字符串數組, 包括kUTTypeUTF8PlainText

      2.UIPasteboardTypeListURL URL數組,包括kUTTypeURL

      3.UIPasteboardTypeListImage 圖形數組, 包括kUTTypePNG 和kUTTypeJPEG

      4.UIPasteboardTypeListColor 色彩數組

總結

以上就是這篇文章的全體內容了,願望能對列位iOS開辟者們有所贊助,假如有疑問年夜家可以留言交換。

【iOS長按UIlabel完成可復制功效】的相關資料介紹到這裡,希望對您有所幫助! 提示:不會對讀者因本文所帶來的任何損失負責。如果您支持就請把本站添加至收藏夾哦!

  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved