iOS - UIMenuController
2016-06-17 15:37
393 查看
UIMenuController的示例
UIMenuController须知
默认情况下, 有以下控件已经支持UIMenuControllerUITextField
UITextView
UIWebView
让其他控件也支持UIMenuController(比如UILabel)
自定义UILabel重写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; }
实现各种操作方法
- (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; }
让label成为第一响应者
// 这里的self是label [self becomeFirstResponder];
显示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// 添加MenuItem(点击item, 默认会调用控制器的方法) 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];
相关文章推荐
- 2016-06-17 nui构件隐藏时相关属性的设置 bug命名【彩虹】
- IOS 多线程05-OperationQueue 、GCD详解
- 脚本启动JD-GUI
- 申请iOS证书(.p12)和描述文件(.mobileprovision),用于Hbuilder打包测试
- 日常坑-page1.jsp (line: 1, column: 96) The JSP specification requires that an attribute name is precede
- iOS开发之UITextView,设置textView的行间距及placeholder
- Android酷炫实用的开源框架(UI框架)
- iOS开发 - 第02篇 - UI进阶 - 14 - 彩票(第一天)
- vue-router
- C# 键值对 KeyValue 解析
- UIViewController的生命周期及iOS程序执行顺序
- easy UI datagrid加载的时候默认不加载数据
- Android 更新UI——runOnUiThread()
- Starting Reload cups, upon starting avahi-daemon to make sure remote queues are populated [fail]
- UILabel 划线
- Looper Handler MessageQueue分
- RebornDB:下一代分布式Key-Value数据库-CSDN.NET
- LeetCode-334.Increasing Triplet Subsequence
- layout_*的一些注意事项
- webpack vuejs 和 vue-router 如何使用?