我希望控制UITableViewCell
突出显示时发生的事情。
我知道在iOS 6.0中可以这样:
- (BOOL)tableView:(UITableView *)tableView shouldHighlightRowAtIndexPath:(NSIndexPath *)indexPath
但是,如果我的目标是5.0及以上,我该如何做?
答案 0 :(得分:3)
iOS 5上的最佳选择是使用此方法
- (NSIndexPath *)tableView:(UITableView *)tableView willSelectRowAtIndexPath:(NSIndexPath *)indexPath
虽然只有当用户点击然后将手指从单元格上抬起时才会调用此方法(如explained here),但我不知道5.x和6.x中有任何其他方法可用你可以用它。
答案 1 :(得分:2)
在我的一个项目中,我需要立即用户触摸单元格来突出显示我的图像,所以我在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];
}
答案 2 :(得分:2)
如果您有自定义UITableViewCell,则可以覆盖
-(void)setHighlighted:(BOOL)highlighted animated:(BOOL)animated
当单元格上的触摸停止时将调用的方法(highlighted
参数将为YES)以及触摸启动或取消时(highlight
参数为NO)。
此方法也适用于iOS 3.0及更高版本。