这里我们要实现的将是选择按钮的自定义

综合上一节的随笔,这里给出效果图。

ViewController.m

//
// ViewController.m
// CX-MenuController
//
// Created by ma c on 16/4/7.
// Copyright © 2016年 xubaoaichiyu. All rights reserved.
// #import "ViewController.h"
#import "CXLabel.h"
@interface ViewController ()
@property (weak, nonatomic) IBOutlet UIWebView *webView;
@property (weak, nonatomic) IBOutlet CXLabel *label; @end @implementation ViewController - (void)viewDidLoad {
[super viewDidLoad]; [self.webView loadHTMLString:@"<div>旭宝爱吃鱼旭宝爱吃鱼旭宝爱吃鱼旭宝爱吃鱼旭宝爱吃鱼旭宝爱吃鱼旭宝爱吃鱼旭宝爱吃鱼旭宝爱吃鱼旭宝爱吃鱼旭宝爱吃鱼旭宝爱吃鱼旭宝爱吃鱼旭宝爱吃鱼旭宝爱吃鱼</.div>" baseURL:nil]; UILongPressGestureRecognizer * longPress = [[UILongPressGestureRecognizer alloc]initWithTarget:self action:@selector(click)];
[self.label addGestureRecognizer:longPress]; } -(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{ [self.view endEditing:YES]; } - (void)click{
//让自己成为第一响应者
[self.label becomeFirstResponder];
//初始化menu
UIMenuController * menu = [UIMenuController sharedMenuController]; UIMenuItem * xu = [[UIMenuItem alloc]initWithTitle:@"旭" action:@selector(xu)];
UIMenuItem * bao = [[UIMenuItem alloc]initWithTitle:@"宝" action:@selector(bao)];
UIMenuItem * ai = [[UIMenuItem alloc]initWithTitle:@"爱" action:@selector(ai)];
UIMenuItem * chi = [[UIMenuItem alloc]initWithTitle:@"吃" action:@selector(chi)];
UIMenuItem * yu = [[UIMenuItem alloc]initWithTitle:@"鱼" action:@selector(yu)]; menu.menuItems = @[xu,bao,ai,chi,yu]; //设置menu的显示位置
[menu setTargetRect:self.label.frame inView:self.view];
//让menu显示并且伴有动画
[menu setMenuVisible:YES animated:YES]; } - (void)xu{ }
- (void)bao{ }
-(void)ai{ }
-(void)chi{ }
-(void)yu{ } @end

CXLabel.m

//
// CXLabel.m
// CX-MenuController
//
// Created by ma c on 16/4/7.
// Copyright © 2016年 xubaoaichiyu. All rights reserved.
// #import "CXLabel.h" @implementation CXLabel - (void)awakeFromNib{
[self setup];
}
-(instancetype)initWithFrame:(CGRect)frame{
self = [super initWithFrame:frame];
if (self) {
[self setup];
}
return self;
} - (void)setup{
//允许用户交互
self.userInteractionEnabled = YES;
}
//允许自己成为第一响应者
- (BOOL)canBecomeFirstResponder{
return YES;
}
//Label能够执行哪些操作(menu)
- (BOOL)canPerformAction:(SEL)action withSender:(id)sender{ // if (action == @selector(copy:) || action == @selector(cut:) || action == @selector(paste:)) {
// return YES;
// } return NO;
} - (void)copy:(id)sender{
//复制版
UIPasteboard * paste = [UIPasteboard generalPasteboard]; paste.string = self.text; } - (void)cut:(id)sender{ UIPasteboard * paste = [UIPasteboard generalPasteboard]; paste.string = self.text; self.text = nil; } - (void)paste:(id)sender{ UIPasteboard * paste = [UIPasteboard generalPasteboard]; self.text = paste.string; } @end

IOS MenuController的部分操作的更多相关文章

  1. IOS MenuController初步了解

    IOS MenuController初步了解 默认情况下有以下控件已经支持MenuController. UITextField UITextView UIWebView 让其他控件也支持MenuCo ...

  2. iOS sqlite 的各种操作

    iOS --SQL的增加.删除.查找.修改 iOS对于数据库的操作:增加.删除.查找.修改 首先需要创建一个数据库:本程序的数据库是在火狐浏览器里的插件里写的微量型数据库 火狐找查找SQLite Ma ...

  3. iOS 检查app版本更新操作

    iOS 检查app版本更新操作 1:获取本地安装的版本信息: [NSString stringWithFormat:@"Version %@ (%@)", [[[NSBundle ...

  4. iOS的I/O操作

    一般而言,处理文件时都要经历以下四个步骤: 1.创建文件 2.打开文件,以便在后面的I/O操作中引用该文件 3.对打开的文件执行I/O操作(读取.写入.更新) 4.关闭文件 iOS中,对文件常见的处理 ...

  5. 在Visual Studio 2013/2015上使用C#开发Android/IOS安装包和操作步骤

    Xamarin 配置手册和离线包下载 http://pan.baidu.com/s/1eQ3qw8a 具体操作: 安装前提条件 1. 安装Visual Studio 2013,安装过程省略,我这里安装 ...

  6. iOS抓包Charles 操作

    今天就来看一下Mac上如何进行抓包,之前有一篇文章介绍了使用Fidder进行抓包 http://blog.csdn.net/jiangwei0910410003/article/details/198 ...

  7. IOS异步和多线程操作&&在sqlite3中的应用

    1,数据库I/O操作(异步) 数据库本身是存储在磁盘上.访问和修改数据库,即对磁盘进行读写,即I/O操作. 磁盘属于计算机硬件,具有DMA能力,不需要CPU干预,可以实现异步操作. I/O操作一般是消 ...

  8. 关于ios中的文本操作-简介

    来源:About Text Handling in iOS 官方文档 iOS平台为我们提供了许多在app中展示文本和让用户编辑文本的方式.同时,它也允许你在app视图中展示格式化的文本和网页内容.你可 ...

  9. iOS 中SQLite数据库操作

    在iOS中实现SQLite数据库的操作:1.导入框架(libsqlite3.0.tbd) 2.导入头文件<sqlite3.h> 3.实现数据的增删改查 实现简单 SQLite数据库操作 的 ...

随机推荐

  1. 比较几种工具Python(x,y) Anaconda WinPython

    浏览了一些相关的论坛,将几大工具的特点分别总结下: Python(x,y) 更新很慢,稳定性一般,默认带有很多包. WinPython  只能在windows上跑,界面友好,和Python(x,y)是 ...

  2. Membership三步曲

    http://www.cnblogs.com/jesse2013/p/membership-part1.html http://www.cnblogs.com/jesse2013/p/membersh ...

  3. MPU9250调试

    MPU9250 芯片概述 MPU9250芯片是一个9轴姿态传感芯片,其中包含了3轴加速度传感器.3轴角速度传感器以及三轴磁力计. 其本质上是MPU6050芯片+AK8963. 可以获取传感芯片的加速度 ...

  4. Office Online简介

    一.什么是Office Online Office Online 将 Microsoft Office 体验扩展到了 Web 浏览器,这使您可以直接在存储文档的 SharePoint 网站上处理文档, ...

  5. Hadoop入门进阶课程13--Chukwa介绍与安装部署

    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,博主为石山园,博客地址为 http://www.cnblogs.com/shishanyuan  ...

  6. 利用 word2vec 训练的字向量进行中文分词

    最近针对之前发表的一篇博文<Deep Learning 在中文分词和词性标注任务中的应用>中的算法做了一个实现,感觉效果还不错.本文主要是将我在程序实现过程中的一些数学细节整理出来,借此优 ...

  7. Android 常见工具类封装

    1,MD5工具类: public class MD5Util { public final static String MD5(String s) { char hexDigits[] = { '0' ...

  8. 每天2分钟平板支撑Plank,锻炼核心肌群,远离背疼痛

    本文已转至  http://www.zhoujingen.cn/blog/2692.html 平板支撑(plank)被公认为训练核心肌群最有效的方法之一,每天坚持做可以让平坦的小腹重见天日.据说目前p ...

  9. 关于开发Windows服务程序容易搞混的地方!

    在开发Windows服务程序时,我们一般需要添加安装程序,即:serviceInstaller,里面有几个关于名称属性,你都搞明白了吗? 1.Description:表示服务说明(描述服务是干什么的) ...

  10. sprint3(第四天)

    今天继续完成前台和后台的整合 燃尽图: