4

我想控制UITableViewCell它突出显示时发生的事情。

我知道在 iOS 6.0 中是可能的:

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

但是,如果我的目标是 5.0 及更高版本,我该怎么做呢?

4

3 回答 3

3

您在 iOS 5 上的最佳选择是使用此方法

- (NSIndexPath *)tableView:(UITableView *)tableView willSelectRowAtIndexPath:(NSIndexPath *)indexPath

尽管仅当用户点击然后将手指从单元格上抬起时才会调用此方法(如此处所述),但我不知道 5.x 和 6.x 中可以使用的任何其他方法。

于 2013-05-16T11:45:10.977 回答
2

如果你有一个自定义 UITableViewCell 你可以覆盖

-(void)setHighlighted:(BOOL)highlighted animated:(BOOL)animated

当触摸在单元格上时将调用的方法(highlighted参数将为 YES)以及触摸向上或取消时(highlight参数为 NO)。

这种方法也适用于 iOS 3.0 及更高版本。

于 2013-05-16T12:50:34.900 回答
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];
    }
于 2013-05-16T11:54:05.757 回答