在自定义UITableViewCell中检测触摸

时间:2012-05-21 11:52:35

标签: iphone uitableview detect touchesbegan

我已经看了网但没找到我的情况的答案。所以我有一个UITableCellView的子类(我试着做一个与电子邮件应用程序中的单元格非常相似的单元格)。我在右侧添加了一个标签,我想用蓝色显示日期。现在,当我触摸单元格时,我想要更改标签的颜色,因为蓝色高光会隐藏它。我已经实现了thouchesBegan,Canceled和Ended,但问题是存在某种“滞后”,单元格获得蓝色高光,但标签在几毫秒后改变颜色。我不知道如何改变它。

以下是我的代码片段:

#import "AnnouncementCell.h"

@implementation AnnouncementCell
@synthesize date;

- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
    self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
    if (self) {
    // Initialization code
    date=[[UILabel alloc] initWithFrame:CGRectMake(220, 13, 100, 22)];
    date.textColor=[UIColor blueColor];
    date.font=[UIFont fontWithName:@"Helvetica" size:14.0];
    [self addSubview:date];
}
return self;
}


-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
date.textColor=[UIColor whiteColor];
[super touchesBegan:touches withEvent:event];

}

-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
date.textColor=[UIColor blueColor];    
[super touchesEnded:touches withEvent:event];

}

-(void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event {
date.textColor=[UIColor blueColor];   
[super touchesCancelled:touches withEvent:event];

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

// Configure the view for the selected state
}

@end

2 个答案:

答案 0 :(得分:0)

您可以尝试在UITableViewController的date.textColor=[UIColor whiteColor];方法中调用didSelectRowAtIndexpath,我认为在您自己实现的方法之前调用它。

答案 1 :(得分:0)

你可以在这种情况下使用UIGestures:

使用这种机制你需要改变代码,可能需要做一些调整。

UITapGestureRecognizer *doubleTap = [[UITapGestureRecognizer alloc]
 initWithTarget:self 
 action:@selector(tapDetected:)];
doubleTap.numberOfTapsRequired = 1;
[self addGestureRecognizer:doubleTap];
[doubleTap release];

-(void)tapDetected:(UIGestureRecognizer*) gesture {
self.lblTitle.backgroundColor=[UIColor blueColor];
[self setNeedsDisplay];
}

self = UITableViewCell。

也需要应用longTapGesture。 同样的事情在我的最后工作。

希望这会帮助你。