UIMenuController 实现长按显示自定义菜单功能

这段时间在集成使用融云聊天功能的时候,想自定义消息cell的长按的菜单,在网上查了查,这是根据 UIMenuController 实现的。具体代码如下,我是使用一个btn实现的
首先创建一个btn,并给btn添加一个长按的事件.
<pre>
UILongPressGestureRecognizer *recognizer = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(longPress:)];
[btn addGestureRecognizer:recognizer];
</pre>
然后实现长按方法

注意,这个控件必须要实现几个方法

1、<pre>
[btn becomeFirstResponder];
</pre>
2、<pre>

  • (BOOL)canBecomeFirstResponder{
    return YES;
    }
    </pre>
    3、让该view处于可交互状态

具体代码如下
<pre>

  • (void)longPress:(UILongPressGestureRecognizer *)recognizer{
    if (recognizer.state == UIGestureRecognizerStateBegan) {
    [btn becomeFirstResponder];
    UIMenuItem *flag = [[UIMenuItem alloc] initWithTitle:@"Flag"action:@selector(flag:)];
    UIMenuItem *approve = [[UIMenuItem alloc] initWithTitle:@"Approve"action:@selector(approve:)];
    UIMenuItem *deny = [[UIMenuItem alloc] initWithTitle:@"Deny"action:@selector(deny:)];
    UIMenuController *menu = [UIMenuController sharedMenuController];

      [menu setMenuItems:[NSArray arrayWithObjects:flag, approve, deny, nil]];
      [menu setTargetRect:btn.frame inView:btn.superview];
      [menu setMenuVisible:YES animated:YES];
    

    }
    }
    </pre>

下面再写出各个菜单点击的实现方法即可,非常简单。
<pre>

  • (void)flag:(id)sender {
    NSLog(@"Cell was flagged");
    }
  • (void)approve:(id)sender {
    NSLog(@"Cell was approved");
    }
  • (void)deny:(id)sender {
    NSLog(@"Cell was denied");
    }
    </pre>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Swift版本点击这里欢迎加入QQ群交流: 594119878最新更新日期:18-09-17 About A cu...
    ylgwhyh阅读 25,698评论 7 249
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 14,369评论 4 61
  • 惜风雪无常 人在外 晴雨更 叹落花无情 任枝留 不为动 感时光匆匆 物已老 偏所爱 亿往昔少年 悲欢离 难再逢 愿...
    cy走啊阅读 2,713评论 0 2
  • 我有很多舍友,因为我们都是。一个96年的小伙,刚大学毕业,做销售为生。 有一段时间,到处找工作,到处跑。 听说调戏...
    断崖草阅读 1,756评论 0 0
  • unicode编码大于两个字节时,会被处理成4个字节,2个字符,使用{} 长度为2 es5的charAt,char...
    这很重要吗阅读 2,571评论 0 0

友情链接更多精彩内容