iOS 学习 - 18.TextField 自定义菜单事件,复制和微信分享
菜单事件包括,剪切、拷贝、全选、分享...,此 demo 只有 copy、share
1.定义 field 继承与 UITextField
- (BOOL)canPerformAction:(SEL)action withSender:(id)sender {if (action == @selector(copy:)) {return YES;}return NO; }- (void)copy:(id)sender {[self resignFirstResponder];//持久化,退出程序 copy 的内容还在 [[UIPasteboard generalPasteboard]setPersistent:YES];//拷贝的内容[[UIPasteboard generalPasteboard]setValue:self.text forPasteboardType:[UIPasteboardTypeListString objectAtIndex:0]]; }
2.ViewController 加载
field = [[CCField alloc]initWithFrame:CGRectMake(100, 200, 100, 40)];field.backgroundColor = [UIColor greenColor];[self.view addSubview:field];UIMenuItem *shareItem = [[UIMenuItem alloc]initWithTitle:@"分享" action:@selector(click)];UIMenuController *menu = [UIMenuController sharedMenuController];[menu setMenuItems:[NSArray arrayWithObjects:shareItem, nil]];
3.分享的实现,以微信为例,准备工作在这里
SendMessageToWXReq *sendReq = [[SendMessageToWXReq alloc]init];// 使用文本信息sendReq.bText = YES;// 发到还有列表 , 默认是 0sendReq.scene = 0;sendReq.text = field.text;//发送分享信息 [WXApi sendReq:sendReq];NSLog(@"213");
二 自定义,使用 UIMenuController
1.使 view 变成第一响应者
2.初始化 UIMenuItem 加入 UIMenuController 中
3.实现 canPerformAction: withSender: 方法
还是以复制为例
- (BOOL)canBecomeFirstResponder {return YES; }- (void)click:(UITapGestureRecognizer *)tap {//要显示 menu 必须将触碰的 View 设为第一响应对象 [self.view becomeFirstResponder];UIMenuController *menuController = [UIMenuController sharedMenuController];UIMenuItem *copyItem = [[UIMenuItem alloc]initWithTitle:@"复制" action:@selector(click)];menuController.menuItems = @[copyItem];//设置 menu 的 frame和父 view[menuController setTargetRect:CGRectMake(_label.frame.origin.x, _label.frame.origin.y, 100, 50) inView:self.view];[menuController setMenuVisible:YES animated:YES]; }
完成demo 在 githud,点我查看
转载于:https://www.cnblogs.com/asamu/p/5785356.html
iOS 学习 - 18.TextField 自定义菜单事件,复制和微信分享相关推荐
- Vue.js 学习笔记 十 自定义按键事件
<div id="divApp"><!--任何键盘动作都会触发--><input type="text" v-on:keyup=& ...
- C#微信公众号开发 -- (七)自定义菜单事件之VIEW及网页(OAuth2.0)授权
通俗来讲VIEW其实就是我们在C#中常用的a标签,可以直接在自定义菜单URL的属性里面写上需要跳转的链接,也即为单纯的跳转. 但更多的情况下,我们是想通过VIEW来进入指定的页面并进行操作. 举一个简 ...
- 微信公众平台开发(二)——自定义菜单、模板消息微信素材
目录 获取AccessToken 1. 新建一个AccessToken对象 2. 新建一个TokenUtil工具类 自定义菜单 自定义菜单功能介绍 代码实现如下 效果如下 发送模板消息 1. 设置⾏业 ...
- 微信自定义菜单 有代码生成器 java微信接口开发 公众平台 SSM redis shiro 多数据源...
获取[下载地址] QQ: 313596790 官网 http://www.fhadmin.org/ A 调用摄像头拍照,自定义裁剪编辑头像,头像图片色度调节 B 集成代码生成器 [正反双向](单表 ...
- IOS 学习---触摸事件与手势
2019独角兽企业重金招聘Python工程师标准>>> 单击手势与双击手势 //单击手势UITapGestureRecognizer *tap1 = [[UITapGestureRe ...
- php企业号自定义菜单,用php实现微信企业号自定义菜单遇到问题,请大神指点!...
有两个文件,一个response.php是用来响应消息的. 另一个是初始页面Sample.php.问题在于,我菜单创建出来了,但是点击之后没有出现我response里面的消息回发,不知道为什么. re ...
- 自定义Dialog对话框(实现微信分享对话框)
首先看一下实现的效果图: 实现思路,首先要对Dialog进行自定义,使用我们自己的布局,其次我们发现Dialog中展示的数据类型.展示的样式也是略有不同的,这就需要我们在数据格式方法进行一些设置,以实 ...
- 微信公众号订阅号开发的学习(二):获取用户发送的消息、简单的自动回复、自定义菜单
获取用户发送的消息 基础 微信服务器会发送两种类型的消息给开发者服务器. get请求 验证服务器的有效性 post请求 微信服务器会将用户发送的数据转发到开发者服务器上 实现 基于微信公众号订阅号开发 ...
- 微信公众平台自定义菜单接口API指南
微信公众平台开发模式自定义菜单接口API指南 开发实现方法,请查看 微信公众平台开发(58)自定义菜单 简介 开发者获取使用凭证(如何获取凭证)后,可以使用该凭证对公众账号的自定义菜单进行创建.查询和 ...
- 微信公众平台开发(24) 自定义菜单功能开发
原文: http://www.cnblogs.com/imaker/p/5491433.html 一.简介 微信公众平台服务号以及之前成功申请内测资格的订阅号都具有自定义菜单的功能.开发者可利用该功能 ...
最新文章
- 4月CISSP中文机考备考经验
- hdu_2243_考研路茫茫——单词情结(AC自动机+矩阵)
- java xmpp openfire_搭建Xmpp服务器Openfire
- C++笔记-基于邻接表的BFS(宽度优先遍历)
- 对reids 服务器性能测试
- Python基础-range()函数(定义一段整数范围)
- 整数类型及整数类型的显示转换
- java 小数 乘法_javascript(js)的小数点乘法除法-Java架构师必看
- 多示例学习 MIL(multiple instance learning) 理解
- 6.高级Magento模型EAV
- Linu下建立svn版本库
- QT 基于饼状图的一个抽奖系统
- 基于单片机at89s52的频率计设计c语言程序,基于AT89S52单片机电子万年历设计(附程序,电路原理图)...
- 项目经理应对需求变更的策略
- 区块链入门导航-磨链社区
- 腾达ap设置说明_腾达Tenda F6无线信号放大模式(Client+AP)设置方法
- 记:数据库课程设计(一)
- 软件定义的容错计算机体系,1.4 软件容错技术 - 计算机系统容错技术方法
- PTA 7-33 有理数加法(详解)
- 非官方即时通信 IM,支持腾讯IM,环信IM,极光IM,融云IM,网易云信IM等
热门文章
- JAVA阻塞队列LinkedBlockingQueue 以及非阻塞队列ConcurrentLinkedQueue 的区别
- Sql Server 中 根据具体的值 查找该值所在的表和字段
- java Beanutils.copyProperties( )用法
- 为什么JavaScript中给变量赋值会影响到其他地方?
- 在框架中用JS设置target(用于location.href)
- 经典排序算法(六)--归并排序Merge Sort
- 33. 把数组排成最小的数(C++版本)
- 地壳中元素含量排名记忆口诀_碳元素的知识点总结
- ora创建物化视图 11g版本
- FISCO BCOS(五)———部署安装jdk1.8