给tableView的cell上加长按转发,复制、、等功能

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    
    DLJobLogTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"otherCell"];
    WorkLogDataModel * model = [self.dataArray objectAtIndex:indexPath.row];
    
    [cell setup:model];
    //给cell加上长按手势
    UILongPressGestureRecognizer * longPressGesture =  [[UILongPressGestureRecognizer alloc]initWithTarget:self action:@selector(cellLongPress:)];
    [cell addGestureRecognizer:longPressGesture];
    [longPressGesture release];

return cell;
}

#pragma mark---长按复制转发相关的一些实现方法
// 此方法必须实现,不然会长按之后不会显示出
- (BOOL) canPerformAction: (SEL) action withSender: (id) sender
{
    
    if(action == @selector(handleCopyAndSendRoomCell:)||action [email protected](handleCopyCell:))
    {
        return YES;
    }
    return NO;
    
}
- (void)cellLongPress:(UIGestureRecognizer *)recognizer{
    
    if (recognizer.state == UIGestureRecognizerStateBegan) {
        
        CGPoint location = [recognizer locationInView:self.tableView];
        NSIndexPath * indexPath = [self.tableView indexPathForRowAtPoint:location];
        
        WorkLogDataModel * model = (WorkLogDataModel *)[self.dataArray objectAtIndex:indexPath.row];
        NSDate * timedate = [utils dateTimeToDate:model.createDate];
        NSString * time = [self titleFromDate:timedate];
        MemberModel *member = [UtilsForUM getMemberModelWithPhone:model.phone OrWithUmid:0];
        [UIPasteboard generalPasteboard].string = [NSString stringWithFormat:@"标题:%@\n内容:\n%@\n转自[%@]的工作日志",time,model.msg,member.name];
        
        if (indexPath !=nil) {
            DLJobLogTableViewCell *cell = (DLJobLogTableViewCell *)recognizer.view;
            //这里把cell做为第一响应(cell默认是无法成为responder,需要重写canBecomeFirstResponder方法)
            [cell becomeFirstResponder];
            UIMenuItem *itCopy = [[UIMenuItem alloc] initWithTitle:@"转发到群组" action:@selector(handleCopyAndSendRoomCell:)];
            
            UIMenuItem *itDelete = [[UIMenuItem alloc] initWithTitle:@"复制" action:@selector(handleCopyCell:)];
            
            UIMenuController *menu = [UIMenuController sharedMenuController];
            
            [menu setMenuItems:[NSArray arrayWithObjects:itCopy,itDelete,nil]];
            [menu setTargetRect:cell.frame inView:cell.superview];
            [menu setMenuVisible:YES animated:YES];
            
            [itCopy release];
            [itDelete release];
            
        }
        
    }
    
}
//开启长按复制转发等的响应------此方法实现在自定义的cell中
- (BOOL)canBecomeFirstResponder{
    return YES;
}
-(void)handleCopyAndSendRoomCell:(id)sender
{
    D("%@",[UIPasteboard generalPasteboard].string);
    discussionGroupController * aDGC = [[discussionGroupController alloc]init];
    aDGC.jobLogString = [UIPasteboard generalPasteboard].string;
    [utils pushViewController:aDGC animated:YES];
    [aDGC release];
}
-(void)handleCopyCell:(id)sender
{
    D("%@",[UIPasteboard generalPasteboard].string);
}

时间: 2024-10-09 06:05:51

给tableView的cell上加长按转发,复制、、等功能的相关文章

点击cell后 cell的背景不变,cell上的字体颜色发生改变的功能实现

在我们使用音频播放的时候,常常出现播放的时候,被播放的cell的字体有别于其他cell的字体,这样的功能如何实现. 首先在应用上,cell肯定是自己定制的,上面可以放置UIImageView和UILable控件 在点击的时候,被点击的图片和Label的字体颜色发生改变. 我们需要在didSelectRowAtIndexPath方法.cellForRowAtIndexPath方法中分别对cell上的颜色进行改变.最重要的事情是:在cellForRowAtIndexPath方法中添加这样的代码块 f

IOS开发系列--TableView、多个TableViewCell、自定义Cell、Cell上画画(故事板+代码方式),ios7tableview索引

在此之前,我们已经创建了一个通过简单的表视图应用程序并显示预定义的图像.在本教程中,我们将继续努力,使应用程序变得更好,: >不同的行显示不同的图像 - 上个教程,我们的所有行显示相同的缩略图.那么不同的食物显示不同的图片不是更好么? >自定义视图单元-我们将展示我们自己的视图来替代默认表单元格样式 显示不同缩略图 在我们更改代码之前,让我们回顾显示缩略图的代码. 最后,我们增加了一个行代码指示UITableView每一行显示"creme_brelee.jpg"这张图片.显

IOS开发之TableView、多个TableViewCell、自定义Cell、Cell上画画(故事板+代码方式)

最近要做一个项目,有个账户设置界面,看了微博.微信.QQ,他们的账号设置都比较原生态没做什么处理.春雨医生的账号不错,做了许多处理.不说废话直接上代码. 第一步: //UserTableViewCell.h这里定义第一种Cell #import <UIKit/UIKit.h> @interface UserTableViewCell : UITableViewCell @property (weak, nonatomic) IBOutlet UIImageView *userviewcelli

iOS 如何设置tableview列表的cell上的的设置删除键 、置顶按钮、 未读信息按钮

思路很重要! 主要是写下我实现的具体思想,效果:首先,将cell向左滑动的时候,就会出现 删除  置顶 等按钮,那么我们就可以设计在cell上加两层的控件,第一层放的便是你要添加的 删除  置顶 等按钮  ,把这些按钮布置在cell的右侧  然后在第二层就是放一个uiview 这个uiview大小和cell的大小一样  然后再到uiview上添加一些显示数据的控件.  问题: 那第一层的 删除和置顶等按钮不是被覆盖了吗?  对 要的就是这种效果,现在的解决思路就是在uiview 上添加一个 pa

[IOS 开发] TableView、多个TableViewCell、自定义Cell、Cell上画画(故事板+代码方式)

第一步: //UserTableViewCell.h这里定义第一种Cell #import <UIKit/UIKit.h> @interface UserTableViewCell : UITableViewCell @property (weak, nonatomic) IBOutlet UIImageView *userviewcellicon; @property (weak, nonatomic) IBOutlet UILabel *userviewcellname; @end //U

iOS-UITableView-处理cell上按钮事件(弹出警示框,页面跳转等)

一. 目的: 实现UITableViewCell上按钮点击事件可以进行页面跳转. 二. 实现方法: 1. 用协议的方式的实现. 2. 需要自定义UITableViewCell. 三. 代码部分. cell.h中 #import <UIKit/UIKit.h> @protocol SevenProtocolDelegate <NSObject> - (void)sevenProrocolMethod:(UIViewController *)viewController and:(NS

tableview 删除cell

正如在以前的帖子说,但是我在转到故事版(StoryBoard)教程之前,我有另外一个问题来回答. 我如何从UITableView删除一行呢? 当人们构建简单的表视图引用程序后,这是另一个常见的??问题.同样的,它比你想象的更容易.但在进入编码部分,我打算给你介绍一个程序员使用最多的设计模式,用户界面??编程的模型 - 视图 - 控制器模式(Model-View-Controller). 如果你是认真对待iOS编程的话,你无法逃避学习模型 - 视图 - 控制器(MVC).除了iOS编程,MVC也常

关于UITableView选中效果以及自定义cell上的控件响应事件

tableView默认的点击效果是:点击cell:A,出现点击效果,点另一个cell:B的时候,A的点击效果才会消失. 1.对于tableView,比较常用的效果,是点击表格行,出现效果,点击完毕,效果消失 那么就要在代码里做一些设置.代码如下: -(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { [tableView deselectRowAtIndexPath

复杂TableView在iOS上的性能优化

声明:本文翻译自<iOS performance optimization>,原文作者 Khang Vo.翻译本文纯属为了技术交流的目的,并不具有任何的商业性质,也不得利用本文内容进行商业盈利.欢迎转载,但是希望转载的时候加上出处连接,谢谢.译者联系方式 [email protected],如果有 iOS 开发之类的问题,欢迎?一起讨论,谢谢.另,由于本人翻译经验不多,如果翻译不妥或者理解不到位的地方,希望各位朋友海涵,可以发信到上述邮箱,我会及时地根据大家的反馈,对翻译稿做及时地修改,谢谢!