UITableView控制突出显示时会发生什么

时间:2013-05-16 11:35:22

标签: ios objective-c

我希望控制UITableViewCell突出显示时发生的事情。

我知道在iOS 6.0中可以这样:

- (BOOL)tableView:(UITableView *)tableView shouldHighlightRowAtIndexPath:(NSIndexPath *)indexPath

但是,如果我的目标是5.0及以上,我该如何做?

3 个答案:

答案 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及更高版本。