你好,歡迎來到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];
}

補充:

一、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時,系統會調用上面對應的方法

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

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

      2.UIPasteboardTypeListURL URL數組,包含kUTTypeURL

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

      4.UIPasteboardTypeListColor 顏色數組

總結

以上就是這篇文章的全部內容了,希望能對各位iOS開發者們有所幫助,如果有疑問大家可以留言交流。

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