UIMenuController
来源:互联网 发布:fiddler拦截修改数据 编辑:程序博客网 时间:2024/05/18 02:50
UIMenuController的使用,对UILabel拷贝以及定制菜单,需要完成以下几个步骤
- Menu所处的View必须实现 – (BOOL)canBecomeFirstResponder, 且返回YES
- Menu所处的View必须实现 – (BOOL)canPerformAction:withSender, 并根据需求返回YES或NO
- 使Menu所处的View成为First Responder (becomeFirstResponder)
- 定位Menu (- setTargetRect:inView:)
- 展示Menu (- setMenuVisible:animated:)
例如:
- (1). 在定义MYLabel继承UILabel
#import "MYLabel.h"@implementation MYLabel//使其可以成为第一响应 默认为NO- (BOOL)canBecomeFirstResponder{ return YES;}//绑定事件- (id)initWithFrame:(CGRect)frame{ self = [super initWithFrame:frame]; if (self) { [self attachTapHandler]; } return self;}//UILabel默认是不接收事件的,我们需要自己添加touch事件-(void)attachTapHandler{ self.userInteractionEnabled = YES; //用户交互的总开关 UITapGestureRecognizer *touch = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTap:)]; touch.numberOfTapsRequired = 2; [self addGestureRecognizer:touch];}//"反馈"关心的功能-(BOOL)canPerformAction:(SEL)action withSender:(id)sender{ return ( action == @selector(paste:)||action == @selector(copy:)||action == @selector(weiboShare:)||action == @selector(mailShare:));}//针对于copy的实现-(void)copy:(id)sender{ UIPasteboard *pboard = [UIPasteboard generalPasteboard];pboard.string = self.text; NSLog(@"%@",pboard.string);}//针对于复制的实现- (void)paste:(id)sender{ UIPasteboard *pboard = [UIPasteboard generalPasteboard]; self.text = pboard.string;}- (void)mailShare:(UIMenuItem *)item{ NSLog(@"邮件分享");}- (void)weiboShare:(UIMenuItem *)item{ NSLog(@"微博分享");}//双击手势-(void)handleTap:(UIGestureRecognizer*) recognizer{ [self becomeFirstResponder]; UIMenuController *menu = [UIMenuController sharedMenuController]; UIMenuItem* mailShare = [[UIMenuItem alloc]initWithTitle:@"邮件分享" action:@selector(mailShare:)]; UIMenuItem* weiboShare = [[UIMenuItem alloc]initWithTitle:@"微博分享" action:@selector(weiboShare:)]; [menu setMenuItems:[NSArray arrayWithObjects:mailShare,weiboShare, nil]]; [menu setTargetRect:self.frame inView:self.superview]; [menu setTargetRect:self.frame inView:self.superview]; [menu setMenuVisible:YES animated:YES];}@end
- (2). 初始化MYLabel
view = [[MYLabel alloc]initWithFrame:CGRectMake(0, 100, 320, 40)];view.text = @"11111";view.backgroundColor = [UIColor redColor];[self.view addSubview:view];
0 0
- UIMenuController
- UIMenuController
- UIMenuController
- UIMenuController
- UIMenuController
- UIMenuController
- UIMenuController
- UIMenuController
- UIMenuController
- UIMenuController
- UIMenuController使用
- UIMenuController使用
- 15.UIMenuController
- UIMenuController使用
- UIMenuController使用
- UIMenuController用法
- UIMenuController使用
- 系统UIMenuController
- PDF文档合并器
- 返回值(null)和<null>处理【空指针和野指针】
- 1067. Sort with Swap(0,*) (25)【贪心】——PAT (Advanced Level) Practise
- java(一)编程工具的下载与环境变量的配置
- Ubuntu 安装Flask
- UIMenuController
- hdu5601 BestCoder Round #67 (div.2)
- android 之开源控件roundedimageview
- suse防火墙 iptables不存在
- 使用node.js的第三方模块Mongoose访问mongodb(六)
- NSAttributedString
- Ubuntu安装php--mongo扩展
- 添加字体
- 欢迎使用CSDN-markdown编辑器