我想控制UITableViewCell
它突出显示时发生的事情。
我知道在 iOS 6.0 中是可能的:
- (BOOL)tableView:(UITableView *)tableView shouldHighlightRowAtIndexPath:(NSIndexPath *)indexPath
但是,如果我的目标是 5.0 及更高版本,我该怎么做呢?
我想控制UITableViewCell
它突出显示时发生的事情。
我知道在 iOS 6.0 中是可能的:
- (BOOL)tableView:(UITableView *)tableView shouldHighlightRowAtIndexPath:(NSIndexPath *)indexPath
但是,如果我的目标是 5.0 及更高版本,我该怎么做呢?
您在 iOS 5 上的最佳选择是使用此方法
- (NSIndexPath *)tableView:(UITableView *)tableView willSelectRowAtIndexPath:(NSIndexPath *)indexPath
尽管仅当用户点击然后将手指从单元格上抬起时才会调用此方法(如此处所述),但我不知道 5.x 和 6.x 中可以使用的任何其他方法。
如果你有一个自定义 UITableViewCell 你可以覆盖
-(void)setHighlighted:(BOOL)highlighted animated:(BOOL)animated
当触摸在单元格上时将调用的方法(highlighted
参数将为 YES)以及触摸向上或取消时(highlight
参数为 NO)。
这种方法也适用于 iOS 3.0 及更高版本。
在我的一个项目中,我需要在用户触摸单元格时立即突出显示我的图像,所以我已经像这样在 Ios 5.0 中实现了突出显示状态。这些函数是用自定义单元类编写的。根据您的要求修改这些功能。
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
[self hightlightImage];
[self performSelector:@selector(detecetedLongTap) withObject:nil afterDelay:1.0];
[super touchesBegan:touches withEvent:event];
}
-(void)detecetedLongTap{
[self hightlightImage];
}
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
[super touchesMoved:touches withEvent:event];
}
-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
if (titleLabel.textColor == [UIColor blackColor])
[self hightlightImage];
[super touchesEnded:touches withEvent:event];
}