//
// ZsyTextField.m
// UIMenuController使用简介
//
// Created by Zsy on 15/3/2.
// Copyright © 2017年 Zsy. All rights reserved.
//
#import "ZsyTextField.h"
@implementation ZsyTextField
- (void)awakeFromNib {
[self setUp];
}
- (instancetype)initWithFrame:(CGRect)frame {
if (self = [super initWithFrame:frame]) {
[self setUp];
}
return self;
}
- (void)setUp {
self.userInteractionEnabled = YES;
[self addGestureRecognizer:[[UILongPressGestureRecognizer alloc]initWithTarget:self action:@selector(longPress)]];
}
- (void)longPress {
//1.设置label为第一响应者
//通过设置第一响应者UIMenuController可以获得支持哪些操作的信息,操作怎么处理
[self becomeFirstResponder];
//2.设置UIMenuController
UIMenuController * menu = [UIMenuController sharedMenuController];
//当长按label的时候,这个方法会不断调用,menu就会出现一闪一闪不断显示,需要在此处进行判断
if (menu.isMenuVisible) {
return;
}
UIMenuItem *item1 = [[UIMenuItem alloc] initWithTitle:@"剪切" action:@selector(myCut:)];
UIMenuItem *item2 = [[UIMenuItem alloc] initWithTitle:@"粘贴" action:@selector(myPasete:)];
UIMenuItem *item3 = [[UIMenuItem alloc] initWithTitle:@"清空" action:@selector(myEmpty:)];
menu.menuItems = @[item1, item2, item3];
[menu setTargetRect:self.bounds inView:self];
[menu setMenuVisible:YES animated:YES];
}
- (BOOL)canBecomeFirstResponder {
return YES;
}
- (BOOL)canPerformAction:(SEL)action withSender:(id)sender {
if (action == @selector(myCut:) || action == @selector(myPasete:) || action == @selector(myEmpty:)) {
return YES;
}
return NO;
}
- (void)myCut:(UIMenuController *)menu {
[self copy:menu];
self.text = nil;
}
- (void)cut:(UIMenuController *)menu {
[self copy:menu];
self.text = nil;
}
- (void)copy:(UIMenuController *)menu {
if (!self.text) {
return;
}
UIPasteboard *paste = [UIPasteboard generalPasteboard];
paste.string = self.text;
}
- (void)myPasete:(UIMenuController *)menu {
UIPasteboard *paste = [UIPasteboard generalPasteboard];
self.text = paste.string;
}
- (void)myEmpty:(UIMenuController *)menu {
self.text = nil;
}
@end