美文网首页iOS DeveloperiOS备忘录征服iOS
利用UIMenuController实现UITableViewC

利用UIMenuController实现UITableViewC

作者: Code_Ninja | 来源:发表于2016-02-17 15:59 被阅读2019次

以下是实现点击自定义UITableViewCell时展示一个自定义菜单实现回复、举报和复制文字的功能。

  • 1.在自定义UITableViewCell中实现以下方法:
-(BOOL)canBecomeFirstResponder
{
    return YES;
}
-(BOOL)canPerformAction:(SEL)action withSender:(id)sender
{
    return action==@selector(replyAction:)||
    action==@selector(reportAction:)||
    action==@selector(copyAction:);
}
  • 2.实现三个自定义菜单项点击事件:
-(void)replyAction:(id)sender
{
    //走代理方法
}

-(void)reportAction:(id)sender
{
    //走代理方法
}

-(void)copyAction:(id)sender
{
    UIPasteboard *pboard = [UIPasteboard generalPasteboard];
    pboard.string = _comment.content;
    
}
  • 3.在自定义UITableViewCell中添加单击手势:
UITapGestureRecognizer *tapGesture = 
[[UITapGestureRecognizer alloc]initWithTarget:self 
action:@selector(showMenu)];
[self addGestureRecognizer:tapGesture];
  • 4.实现点击展示菜单方法:
-(void)showMenu
{
    if(self.isFirstResponder){
        [self resignFirstResponder];
        self.avatarBtn.userInteractionEnabled = YES;
    }else{
        [self becomeFirstResponder];
        self.avatarBtn.userInteractionEnabled = NO;
    }
    
    UIMenuItem *replyItem = [[UIMenuItem alloc]initWithTitle:@"回复" action:@selector(replyAction:)];
    UIMenuItem *reportItem = [[UIMenuItem alloc]initWithTitle:@"举报" action:@selector(reportAction:)];
    UIMenuItem *copyItem = [[UIMenuItem alloc]initWithTitle:@"复制" action:@selector(copyAction:)];
    UIMenuController *menuController = [UIMenuController sharedMenuController];
    menuController.menuItems = @[replyItem,reportItem,copyItem];
    [menuController setTargetRect:self.frame inView:self.superview];
    [menuController setMenuVisible:YES animated:YES];
}
  • 5.效果图

14556931660733.jpg

相关文章

网友评论

    本文标题:利用UIMenuController实现UITableViewC

    本文链接:https://www.haomeiwen.com/subject/rslmkttx.html