UIMenuController在label中的使用
要想在label中使用 必须是继承于label的分类
//
// MYlabel.m
// MenuController
//
// Created by 张明 on 16/3/8.
// Copyright © 2016年 张明. All rights reserved.
//
#import "MYlabel.h"
@implementation MYlabel
- (void)awakeFromNib
{
[self setup];
}
- (instancetype)initWithFrame:(CGRect)frame
{
if (self = [super initWithFrame:frame]) {
[self setup];
}
return self;
}
- (void)setup
{
self.userInteractionEnabled = YES;
[self addGestureRecognizer:[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(labelClick)]];
}
/*
让label有资格成为第一响应者
*/
- (BOOL)canBecomeFirstResponder
{
return YES;
}
- (void)labelClick
{
//1.label要成为第一响应者(作用是:告诉UIMenuController支持哪些操作,这些操作如何处理)
[self becomeFirstResponder];
//2.显示MenuController
UIMenuController *menu = [UIMenuController sharedMenuController];
//targetRect :MenuController需要指向的矩形框
//targetview:targetrect会以targetview的左上角为坐标原点
[menu setTargetRect:self.bounds inView:self];
[menu setMenuVisible:YES animated:YES];
}
/*
label能执行哪些操作(比如copy.paste 等等)
@return YES:支持这种操作
*/
- (BOOL)canPerformAction:(SEL)action withSender:(id)sender
{
if (action == @selector(cut:) || action == @selector(copy:) || action == @selector(paste:)) return YES;
return NO;
}
- (void)copy:(id)sender
{
//将自己的文字赋值到粘贴板
UIPasteboard *board = [UIPasteboard generalPasteboard];
board.string = self.text;
}
- (void)cut:(id)sender
{
//将自己的文字赋值到粘贴板
[self copy:sender];
//清空文字
self.text = nil;
}
- (void)paste:(id)sender
{
//将粘贴板的文字复制到自己身上
UIPasteboard *board = [UIPasteboard generalPasteboard];
self.text = board.string;
}
@end
最新文章
- AX7: Quick and easy debugging
- 建立时间和保持时间(setup time 和 hold time)
- Array-基本功能
- div 一段时间后自动隐藏
- EntityFramework:支持同一事务提交的批量删除数据实现思路
- 洛谷P1251 餐巾(网络流)
- 【HDU 5233】Tree chain problem (树形DP+树剖+线段树|树状数组)最大权不相交树链集
- java.lang.UnsupportedClassVersionError(Unsupported major.minor version 49.0)报错
- ios7新特性1-UI变化、UIKit动态行为支持与Text Kit新接口
- SQL 语句修改列名 属性 默认值
- C# Environment类_获取程序所在机器信息
- 吐血总结|史上最全的MySQL学习资料!!
- ssh项目问题01,为创建数据库抛出的异常
- Spring Boot 2.0 新特性和发展方向
- Shell - 简明Shell入门15 - 调试(Debug)
- leetcode_输入一个数组,目标树,检查目标是数组下标的哪两个之和,不准重复
- Python算法——递归思想
- triton,docker,mesos
- 保留注释换行的python模块configparser
- 使用update_attribute和validation