给UITableView的cell添加长按手势,可以知道cell

2018-01-03  本文已影响535人  努力奔跑的小男孩
用XIB自定义的Cell(MessageCell) 里面带有长按手势

MessageCell.h文件

#import <UIKit/UIKit.h>
@class EachMessageModel;
@interface MessageCell : UITableViewCell

@property (nonatomic, strong) EachMessageModel *messageModel;

/**
 添加长按手势

 @param target 手势作用者
 @param action 响应方法
 */
- (void)addLongGes:(id)target action:(SEL)action;


@end

MessageCell.m文件

#import "MessageCell.h"
#import "MessageModel.h"

@interface MessageCell()

/**消息背景图*/
@property (weak, nonatomic) IBOutlet UIImageView *messageBGView;
/**消息标题*/
@property (weak, nonatomic) IBOutlet UILabel *messageTitleL;
/**消息简介*/
@property (weak, nonatomic) IBOutlet UILabel *messageSubL;
/**消息日期*/
@property (weak, nonatomic) IBOutlet UILabel *messageDateL;
/**已读 未读*/
@property (weak, nonatomic) IBOutlet UILabel *isRead;
/**小红点*/
@property (weak, nonatomic) IBOutlet UIView *redView;
@end

@implementation MessageCell

- (void)awakeFromNib {
    [super awakeFromNib];
    self.contentView.backgroundColor = [UIColor colorFromHexRGB:@"f2f2f2"];
    self.redView.layer.cornerRadius = 3.5;
    self.redView.layer.masksToBounds = true;
    self.selectionStyle = UITableViewCellSelectionStyleNone;
    self.messageBGView.image = [UIImage imageWithOriginalName:@"messageBG"].resizbleImage;
}

- (void)setMessageModel:(EachMessageModel *)messageModel{
    _messageModel = messageModel;
    self.messageTitleL.text = messageModel.title;
    self.messageDateL.text = [commonTools trameformDateStr:messageModel.createDate];
    self.messageSubL.text = messageModel.intro;
    //是否已读 0.未读 1.已读
    if (messageModel.isRead.integerValue == 0) {
        self.redView.hidden = false;
        self.isRead.text = @"未读";
    }else{
        self.redView.hidden = true;
        self.isRead.text = @"已读";
    }
    [self.contentView layoutIfNeeded];
    messageModel.rowHeight = self.isRead.mj_y + self.isRead.mj_h + 19;
}

// 长按手势
- (void)addLongGes:(id)target action:(SEL)action{
    UILongPressGestureRecognizer *longGes = [[UILongPressGestureRecognizer alloc]initWithTarget:target action:action];
    //设定最小的长按时间 按不够这个时间不响应手势
    longGes.minimumPressDuration = 1;
    [self.contentView addGestureRecognizer:longGes];
}

- (void)setSelected:(BOOL)selected animated:(BOOL)animated {
    [super setSelected:selected animated:animated];
    
}

@end
在cellForRowAtIndexPath方法里面添加长按手势作用者和响应方法
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
    EachMessageModel *eachModel = self.dataArr[indexPath.row];
    MessageCell *messageCell = [tableView dequeueReusableCellWithIdentifier:messageCellID forIndexPath:indexPath];
    [messageCell addLongGes:self action:@selector(longGes:)]; // 在这里添加手势的作用者 和 响应方法
    messageCell.messageModel = eachModel;
    return messageCell;
}
#pragma mark - 长按删除事件
- (void)longGes:(UILongPressGestureRecognizer *)longGes{
    if (longGes.state == UIGestureRecognizerStateBegan) {//手势开始
        CGPoint point = [longGes locationInView:self.messageTableView];
        NSIndexPath *index = [self.messageTableView indexPathForRowAtPoint:point]; // 可以获取我们在哪个cell上长按
        self.selectMessage = index.row;
    }
    if (longGes.state == UIGestureRecognizerStateEnded){//手势结束
        self.alertView.hidden = false; // 删除Alert弹框
    }
}
上一篇下一篇

猜你喜欢

热点阅读