UIMenuController

原创 2015年11月02日 20:43:39

参考文章:

使用UIMenuController可以方便的在app中展示copy/paste菜单,也可以自定义。
在使用UIMenuController的时候,会用到UIResponder的一些方法。

  • – canBecomeFirstResponder
  • – canPerformAction:withSender:

代码:

- (void)viewDidLoad
{
    [super viewDidLoad];

    UITapGestureRecognizer *tapGesture =
      [[UITapGestureRecognizer alloc] initWithTarget:self
                                              action:@selector(handleTapGesture:)];
    [self.view addGestureRecognizer:tapGesture];
}


- (void)handleTapGesture:(UITapGestureRecognizer *)tapGesture {
    NSLog(@"tapGesture:");
//    CGRect targetRectangle = self.tapView.frame;
    CGRect targetRectangle = CGRectMake(100, 100, 100, 100);
    [[UIMenuController sharedMenuController] setTargetRect:targetRectangle
                                                    inView:self.view];

    UIMenuItem *menuItem = [[UIMenuItem alloc] initWithTitle:@"Custom Action"
                                                  action:@selector(customAction:)];

    [[UIMenuController sharedMenuController]
     setMenuItems:@[menuItem]];
    [[UIMenuController sharedMenuController]
     setMenuVisible:YES animated:YES];

}

- (BOOL)canBecomeFirstResponder {
    return YES;
}

- (BOOL)canPerformAction:(SEL)action
              withSender:(id)sender
{
    BOOL result = NO;
    if(@selector(copy:) == action ||
       @selector(customAction:) == action) {
        result = YES;
    }
    return result;
}

// UIMenuController Methods

// Default copy method
- (void)copy:(id)sender {
    NSLog(@"Copy");
}

// Our custom method
- (void)customAction:(id)sender {
    NSLog(@"Custom Action");
}

这里写图片描述

在UITableView或者UICollectionView中,还需要一些额外的方法。

UITableViewDelegate方法
复制和粘贴行内容

  • – tableView:shouldShowMenuForRowAtIndexPath:
  • – tableView:canPerformAction:forRowAtIndexPath:withSender:
  • – tableView:performAction:forRowAtIndexPath:withSender:

UICollectionViewDelegate方法

  • – collectionView:shouldShowMenuForItemAtIndexPath:
  • – collectionView:canPerformAction:forItemAtIndexPath:withSender:
  • – collectionView:performAction:forItemAtIndexPath:withSender:

UIMenuController仅仅只能显示在key window上。在使用其他的library或者framework的时候,可能会遇到一些问题。可以在viewDidAppear: 中调用如下的代码来修复:

[self.view.window makeKeyWindow];

资源:

UILabel

版权声明:本文为博主原创文章,未经博主允许不得转载。

复制 粘贴 全选 添加 拷贝 UIMenuController的使用

复制 粘贴 全选 添加 拷贝 UIMenuController的使用
  • Sico2Sico
  • Sico2Sico
  • 2016年09月09日 09:37
  • 605

Swift UIMenuController中的坑

由于自己喜欢看段子,最近做了一个看段子的APP。主要是因为 网易新闻 和 今日头条 分享段子的姿势恕我不能忍。 完成后的效果 2017-02-21 16_00_55.gif ...
  • yishengzhiai005
  • yishengzhiai005
  • 2017年06月26日 17:13
  • 389

UIMenuController 实现过程,以及不为人知的一些坑

前段时间公司项目需要做单元格中UILabel 内容的复制功能,用系统原有的UIMenuController可以轻松实现,但是在使用过程中,却出现了一个坑,苦苦搜索,baidu、stackoverflo...
  • qq_15186979
  • qq_15186979
  • 2016年07月07日 14:53
  • 1014

关于UIMenuController的使用总结

1. Menu的初始化设置 - (void)showMenuAtRect:(CGRect)rect inView:(UIView *)inView { [self becomeFirstRes...
  • reylen
  • reylen
  • 2015年05月19日 09:27
  • 1798

UIMenuController不显示的解决办法

- (void)pressme:(id)sender {     [self becomeFirstResponder]; // 用于UIMenuController显示,缺一不可 ...
  • woyangyi
  • woyangyi
  • 2015年05月21日 21:13
  • 5024

iOS中UIMenuController基本使用

我这里用了一个按钮,点击按钮的时候给弹出UIMenuController控件 下面的代码是按钮触发事件: -(void)showPopupView:(UIButton ...
  • iosWorker
  • iosWorker
  • 2016年02月23日 11:26
  • 3995

UIMenuController不能正常显示或消失

最近项目里有聊天模块,一开始客户要求加点击复制功能,要有Menu和选中效果,于是添加了一个自定义的UIMenuController,只有复制选项。 但是无论如何都显示不出来T__T 搜索后在这篇文...
  • thelma_yuan
  • thelma_yuan
  • 2015年02月03日 17:19
  • 1875

iOS-你真的会用UIMenuController吗?(详细)

请认真阅读,因为里面有很多细节! UIMenuController的介绍 什么是UIMenuController? UIMenuController是UIKit里面的控件UIMenuCo...
  • qq_30513483
  • qq_30513483
  • 2016年06月14日 19:48
  • 1395

Swift UIMenuController的简单运用和简单自定义

认识系统 UIMenuController * 创建系统 UIMenuController// 要让添加 menu 的目标控件成为第一响应者,否则某些功能会错乱,例如 label 未成为第一响应者...
  • EIamor
  • EIamor
  • 2017年10月14日 17:51
  • 252

长按UITableViewCell弹出UIMenuController——颜婧

[html] view plain copy span style="font-size:24px;">strong>需求:在项目中想要添加一个长按Cell弹出UIMen...
  • tarena_3G
  • tarena_3G
  • 2016年10月16日 23:31
  • 553
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:UIMenuController
举报原因:
原因补充:

(最多只允许输入30个字)