Cell长按添加UIMenuController以及cell canBecomeFirstResponder exception的问题

本文介绍了如何在自定义Cell中使用UIMenuController实现长按显示菜单,以及解决cell canBecomeFirstResponder时崩溃的问题。通过在控制器中设置UIMenuController,并在Cell中实现成为第一响应者的方法,避免重写canPerformAction:withSender:。同时,文章指出当cell尝试成为第一响应者时,由于inputView的命名冲突导致崩溃,解决方法是重命名输入视图属性。
摘要由CSDN通过智能技术生成

网上有很多这个UIMenuController的教程,以及很多可以替代这个显示的第三方,例如:DXPopover等

由于项目UI更改需要,改为系统的UIMenuController显示。

项目中cell有很多个,但是有一个基类的自定义cell,controller是个聊天室类型的,cell长按后需要出现菜单,点击menu,实现方法放在controller里。

下面就讲下要做的事:

1.准备:cell里会有delegate,里面有单击、长按的方法,具体实现通过代理在controller里实现。

2.在controller里,来到cell长按跳转过的方法里:

设置UIMenuController(关于这个的知识可以去百度,这里只说如何使用)

-(void)longPressMenuViewWithCell:(BaseTableViewCell *)cell atPoint:(CGPoint)position
{
    UIView *keyView = [UIApplication sharedApplication].keyWindow.rootViewController.view;
    
    //为使其显示menuController 需要成为第一响应
    [cell becomeFirstResponder];
    
    UIMenuController *menu = [UIMenuController sharedMenuController];
    
    menu.menuItems = @[
                       [[UIMenuItem alloc] initWithTitle:@"LIAOTIAN" action:@selector(onTapMenuChatButton)], //@""里面可以国际化
                       [[UIMenuItem alloc] initWithTitle:@"SHANCHU" action:@selector(onTapMenuDeleteButton)]
                       ];
    
    C
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值