UIMenuController
2016-05-20 20:08
513 查看
UIMenuController的示例
UIMenuController须知
默认情况下, 有以下控件已经支持UIMenuController
UITextField
UITextView
UIWebView
让其他控件也支持UIMenuController(比如UILabel)
让Label成为第一响应者
作用是:告诉UIMenuController支持哪些操作, 这些操作如何处理
// 这里的self是label [self becomeFirstResponder];
在自定义Label(
第一响应者)中重写2个方法
/** * 让label有资格成为第一响应者 */ - (BOOL)canBecomeFirstResponder { return 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; }
在label(
第一响应者)中实现
默认的各种操作方法
- (void)cut:(UIMenuController *)menu { // 将自己的文字复制到粘贴板 [self copy:menu]; // 清空文字 self.text = nil; } - (void)copy:(UIMenuController *)menu { // 将自己的文字复制到粘贴板 UIPasteboard *board = [UIPasteboard generalPasteboard]; board.string = self.text; } - (void)paste:(UIMenuController *)menu { // 将粘贴板的文字 复制 到自己身上 UIPasteboard *board = [UIPasteboard generalPasteboard]; self.text = board.string; }
显示UIMenuController
UIMenuController *menu = [UIMenuController sharedMenuController]; // targetRect: MenuController需要指向的矩形框 // targetView: targetRect会以targetView的左上角为坐标原点 [menu setTargetRect:self.bounds inView:self]; // [menu setTargetRect:self.frame inView:self.superview]; [menu setMenuVisible:YES animated:YES];
自定义UIMenuController内部的Item
添加item点击自定义的item, 默认会调用控制器的方法,具体是哪个控制器,要看第一响应者处在哪个控制器里面
在
第一响应者所在的控制器中实现
自定义item的方法
// 添加MenuItem() UIMenuItem *ding = [[UIMenuItem alloc] initWithTitle:@"顶" action:@selector(ding:)]; UIMenuItem *replay = [[UIMenuItem alloc] initWithTitle:@"回复" action:@selector(replay:)]; UIMenuItem *report = [[UIMenuItem alloc] initWithTitle:@"举报" action:@selector(report:)]; menu.menuItems = @[ding, replay, report];
相关文章推荐
- flex 控件的重要属性
- Delphi控件ListView的属性及使用方法详解
- web下载的ActiveX控件自动更新
- WinForm实现按名称递归查找控件的方法
- C#中父窗口和子窗口之间控件互操作实例
- Android编程之Button控件用法实例分析
- Android控件之CheckBox、RadioButton用法实例分析
- 在Android开发中使用自定义组合控件的例子
- Android重写View实现全新的控件
- MFC中动态创建控件以及事件响应实现方法
- WinForm自定义函数FindControl实现按名称查找控件
- Android控件之ProgressBar用法实例分析
- WinForm拖拽控件生成副本的解决方法
- ASP.NET动态添加用户控件的方法
- ASP.NET的HtmlForm控件学习及Post与Get的区别概述
- WinForm实现移除控件某个事件的方法
- laypage分页控件使用实例详解
- C#分屏控件用法实例
- jquery UI Datepicker时间控件的使用及问题解决
- 可以浮动某个物体的jquery控件用法实例