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:]];
}
2.ViewController 加载
field = [[CCField alloc]initWithFrame:CGRectMake(, , , )];
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;
// 发到还有列表 , 默认是 0
sendReq.scene = ; sendReq.text = field.text;
//发送分享信息
[WXApi sendReq:sendReq];
NSLog(@"");
二 自定义,使用 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, , ) inView:self.view];
[menuController setMenuVisible:YES animated:YES];
}
完成demo 在 githud,点我查看
iOS 学习 - 18.TextField 自定义菜单事件,复制和微信分享的更多相关文章
- C#微信公众号开发 -- (六)自定义菜单事件之CLICK
微信公众号中当用户手动点击了按钮,微信公众号会被动的向用户发送文字消息或者图文消息. 通过C#微信公众号开发 -- (五)自定义菜单创建 我们知道了如何将CLICK类型的按钮添加到自己的微信公众平台上 ...
- C#微信公众号开发 -- (七)自定义菜单事件之VIEW及网页(OAuth2.0)授权
通俗来讲VIEW其实就是我们在C#中常用的a标签,可以直接在自定义菜单URL的属性里面写上需要跳转的链接,也即为单纯的跳转. 但更多的情况下,我们是想通过VIEW来进入指定的页面并进行操作. 举一个简 ...
- Spring学习六:自定义Event事件
Spring 中的自定义事件 编写和发布自己的自定义事件有许多步骤.按照在这一章给出的说明来编写,发布和处理自定义 Spring 事件. 步骤 描述 1 创建一个名称为 SpringExample 的 ...
- PyQt学习随笔:自定义Qt事件可以使用的事件类型的常量值范围
除了<PyQt学习随笔:Qt事件QEvent.type类型常量及其含义资料速查>介绍的Qt已经定义的事件外,Qt还支持自定义事件. 为了方便起见,可以使用 registerEventTyp ...
- 【原】iOS学习18之OC内存管理高级
1.属性的内存管理 1> 属性的语义特性 2> assign下的属性内部实现 @property (nonatomic, assign) NSString *name; @synthesi ...
- iOS学习之UI自定义cell
一.自定义Cell 为什么需要自定义cell:系统提供的cell满足不了复杂的样式,因此:自定义Cell和自定义视图一样,自己创建一种符合我们需求的Cell并使用这个Cell.如下图所示的这些Cell ...
- 判断终端是ios还是安卓的一些妙用(附加微信分享图标修改)
最近遇到一个项目 要求有两个icon(就是下载地址 下载安卓的apk 和ios的安装包) 一开始的方案是 什么设备都显示这两个icon 但是后来老大说这样不好 安卓用户给他下载ios 也不行 ...
- 《C#微信开发系列(2)-自定义菜单管理》
2.0自定义菜单管理 ①接口说明 微信服务号聊天窗口下面的菜单项(有的公众号有启用有的则没有),这个可以在编辑模式简单配置,也可以在开发模式代码配置.微信公众平台开发者文档:微信公众号开发平台创建自定 ...
- Magicodes.WeiChat——自定义knockoutjs template、component实现微信自定义菜单
本人一向比较喜欢折腾,玩了这么久的knockoutjs,总觉得不够劲,于是又开始准备折腾自己了. 最近在完善Magicodes.WeiChat微信开发框架时,发现之前做的自定义菜单这块太不给力了,而各 ...
随机推荐
- Why Namespace? - 每天5分钟玩转 OpenStack(102)
上一节我们讨论了 Neutron 将虚拟 router 放置到 namespace 中实现了不同 subnet 之间的路由.今天探讨为什么要用 namespace 封装 router? 回顾一下前面的 ...
- Linux安装Node.js
安装环境:Ubuntu:x86_64 Node.js 官网:https://nodejs.org 下载Node.js: wget https://nodejs.org/dist/v4.4.3/node ...
- MySQL复合分区
到底还是开源软件,MySQL对复合分区的支持远远没有Oracle丰富. 在MySQL 5.6版本中,只支持RANGE和LIST的子分区,且子分区的类型只能为HASH和KEY. 譬如: CREATE T ...
- iOS 使用xib后获取view的frame出错的问题
如果控制器使用xib做的,在viewDidLoad方法中获取的view.frame是不正确的 这根xib的加载有关, 可以把需要做的事情写在viewWillAppear中就能解决
- 小身材大用途,用PrimusUI驾驭你的页面
“PrimusUI”是自己在借鉴了如今网上很多开源的UI库,再经过自己整理加工的一个简单代码集合. 每个功能块的CSS代码都很少,力求简单易懂,低门槛,代码可根据自己实际情况轻易修改,改到符合自己场景 ...
- 3分钟干货学会使用node-inspector调试NodeJS代码
使用node-inspector调试NodeJS代码 任何一门完备的语言技术栈都少不了健壮的调试工具,对于NodeJS平台同样如此,笔者研究了几种调试NodeJS代码的方式,通过对比,还是觉得node ...
- 利用Angularjs测试引擎Karma进行自动化单元测试
Karma是Google用于angularjs框架单元测试的js引擎(javascript test runner ), angular1 和angular2项目源码的单元测试都是基于karma和ja ...
- Cloud Design Patterns: Prescriptive Architecture Guidance for Cloud Applications 云设计模式:云应用的规范架构指导
1.Cache-aside Pattern 缓存模式 Load data on demand into a cache from a data store. This pattern can impr ...
- shell调用函数返回值深入分析
编写shell脚本过程中,我们经常会自定义一些函数,并根据函数的返回值不同来执行相应的流程,那么我们如何来获取函数的返回值呢? 首先shell中调用函数有两种方式: 第一种:value=`functi ...
- 实体生命周期【Entity Lifecycle】(EF基础系列10)
Before we work on CRUD operation (Create, Read, Update, Delete), it's important to understand the en ...