0

ネットを調べましたが、自分の状況に対する答えが見つかりませんでした。したがって、UITableCellViewのサブクラスがあります(Eメールアプリのセルと非常によく似たセルを作成しようとしています)。右側に青色で日付を表示したいラベルを追加しました。ここで、セルに触れると、青いハイライトでラベルが非表示になるため、ラベルの色を変更したいと思います。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
4

2 に答える 2

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を適用する必要があります。私の最後で同じことが働いています。

これがお役に立てば幸いです。

于 2012-05-21T15:02:12.153 に答える
0

UITableViewControllerdate.textColor=[UIColor whiteColor];のメソッドで呼び出してみることができます。これは、独自に実装されたメソッドの前に呼び出されると思います。didSelectRowAtIndexpath

于 2012-05-21T12:10:40.427 に答える