iOS 长按TableViewCell加长按快捷菜单

tableviewcell 长按出现的快捷菜单这个功能估计大家在项目中用到的比较少

首先我们来看一下效果图,长按cell4后出现效果。

实现这个功能只需要动用三个方法,都是tableview本身有的

第一个方法

-(BOOL)tableView:(UITableView *)tableView shouldShowMenuForRowAtIndexPath:(NSIndexPath *)indexPath

{//允许Menu菜单出现

    return   YES;

}

 

第二个方法

-(BOOL)tableView:(UITableView *)tableView canPerformAction:(SEL)action forRowAtIndexPath:(NSIndexPath *)indexPath withSender:(id)sender

{   

     return YES;  // 表示全部的cell都可以显示menu菜单

   //显示 cut,copy,paste

   if (action == @selector(cut:)){   

          return YES;  

     }  else if(action == @selector(copy:)){      

         return YES;    

     } else if(action == @selector(paste:)){   

         return YES;    

     } else if(action == @selector(select:)){     

       return NO;    

     } else if(action == @selector(selectAll:)){      

       return NO;    

   }  else  {     

       return [super canPerformAction:action withSender:sender];    

  }

}

 

第三个方法

-(void)tableView:(UITableView *)tableView performAction:(SEL)action forRowAtIndexPath:(NSIndexPath *)indexPath withSender:(id)sender{

 if (action == @selector(copy:)) {

        [UIPasteboard generalPasteboard].string = [DataArray objectAtIndex:indexPath.row];

    }else if (action == @selector(cut:)){

        [UIPasteboard generalPasteboard].string = [DataArray objectAtIndex:indexPath.row];

        [DataArray replaceObjectAtIndex:indexPath.row withObject:@"已剪切"];//被剪切的一行所用的字符串来代替,可以为空串,不能为nil

        [tableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationNone];

    }else if (action == @selector(paste:)){

        NSString *pasteString = [UIPasteboard generalPasteboard].string;

        NSString *temString = [NSString stringWithFormat:@"%@%@",[DataArray objectAtIndex:indexPath.row],pasteString];

        [DataArray replaceObjectAtIndex:indexPath.row withObject:temString];

        [tableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationNone];

    }

}

三个方法就可以实现上述功能了,动手试试吧!

 

posted @ 2014-08-28 16:36  Billy_chou  阅读(969)  评论(0编辑  收藏  举报