Iphone UITableViewCell-不同的行为取决于触摸持续时间?

Iphone UITableViewCell-不同的行为取决于触摸持续时间?,iphone,animation,uitableview,image-manipulation,Iphone,Animation,Uitableview,Image Manipulation,我正在尝试在UITableViewCell子类中设置图像动画。当轻触电池的持续时间约为1/2秒或更长时,它就会工作。对于较短的点击,单元格会被选中,但我的动画不会运行 在我的视图控制器中,我有: - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { ImageCell *cell = (ImageCell*)[tableView cellForRowAt

我正在尝试在UITableViewCell子类中设置图像动画。当轻触电池的持续时间约为1/2秒或更长时,它就会工作。对于较短的点击,单元格会被选中,但我的动画不会运行

在我的视图控制器中,我有:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {

    ImageCell *cell = (ImageCell*)[tableView cellForRowAtIndexPath:indexPath];
    cell.imageFlashDuration = 5.0;
    cell.imageFlashNumberOfFrames = 25;
    NSLog(@"Flash image...");
    [cell flashImage];
    [self performSelector:@selector(doSomething:) withObject:video afterDelay:5.0];
}
在我的ImageCell中:

-(void)flashImage {

    UIImage *image = imageView.image;
    if(imageView.isAnimating) {
        NSLog(@"Stop animating");
        [imageView stopAnimating];
    }
    NSMutableArray *animationArray = [NSMutableArray arrayWithCapacity:imageFlashNumberOfFrames];
    for(int i=0; i<imageFlashNumberOfFrames; i++) {
        [animationArray addObject:(i % 2 == 0? black60x60Image : image)];
    }
    imageView.animationImages = animationArray;
    imageView.animationDuration = imageFlashDuration;

    NSLog(@"> Start animating");
    [imageView startAnimating];
}
-(无效)flashImage{
UIImage*image=imageView.image;
如果(imageView.isAnimating){
NSLog(@“停止设置动画”);
[图像视图停止动画制作];
}
NSMutableArray*animationArray=[NSMutableArray阵列容量:imageFlashNumberOfFrames];
对于(int i=0;我开始设置动画)

2009-07-02 22:02:59.455 MyProg[1797:20b]Flash图像

2009-07-02 22:02:59.460 MyProg[1797:20b]>开始制作动画

2009-07-02 22:03:02.463MyProg[1797:20b]闪光图像

2009-07-02 22:03:02.468 MyProg[1797:20b]>开始制作动画

2009-07-02 22:03:05.009 MyProg[1797:20b]闪光图像

2009-07-02 22:03:05.014 MyProg[1797:20b]>开始制作动画

以上是“短”和“长”触摸的混合。长触摸导致细胞选择和图像动画,短触摸导致细胞选择而没有动画


此外,如果短按之后再短按单元格,动画就会开始。

我认为问题在于DidSelectRowatineXpath方法。在这里您调用CellForRowatineXpath方法,该方法可能不会返回单击的单元格!返回的单元格可能是新单元格,在屏幕上不可见,上面有一个动画图像,但是…它不可见

我假设您使用不同的方法处理较长的单击(而不是DidSelectRowatineXpath)

在CellForRowatineXpath方法中,您可能应该在tableview自身请求单元格的位置保留对单元格的引用(或为其分配标记或其他内容)。然后,在使用DidSelectRowatineXpath方法时,查找该单元格的特定实例(通过引用或标记…)


希望这有帮助:)干杯

所有触摸都是用相同的方法处理的,但是感谢你的引导。我会尝试一下。嗯,它肯定是同一个单元格-我尝试在两种方法中记录单元格/自指针值&它们是相同的。你找到解决方案了吗?没有。根据设备的不同,行为不同。在旧的(3GS之前)上iPhone动画从未出现过。在6个月大的iPodtouch上,可以看到上述行为。我还没有在3GS上尝试过。