2009-07-02 6 views
1

私はUITableViewCellサブクラスでイメージをアニメートしようとしています。セルのタップが約1/2秒以上続くと動作します。短いタップの場合、セルが選択されますが、アニメーションは実行されません。私のビューコントローラでUITableViewCell - タッチの持続時間によって異なる動作ですか?

、私が持っている:私のImageCellで

- (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]; 
} 

:私のログで

-(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]; 
} 

、私が見

2009-07-02午後09時02分:55.907 MyProg [1797:20b]フラッシュ画像...

2009-07-02 22:02:55.912マイプログレ:02:59.455 MYPROG [1797:20B]フラッシュ画像...

2009-07-02 22:02:59.460 MYPROG [[1797:20B]>

2009-07-02 22

をアニメーション開始します1797:03:02.463 MYPROG [1797:20B]>

2009-07-02 22

をアニメーション開始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]>

上記のアニメーション開始は、タッチ '短い' と '長い' の混合物でした。長いタッチはセル選択と画像アニメーションをもたらし、短いものはアニメーションなしのセル選択をもたらした。

さらに、短いタップに続いてセルのもう1つの短いタップがあると、アニメーションが開始されます。

+0

はあなたが解決策を見つけますか? –

+0

デバイスによって、動作が異なります。古い(3GS以前の)iPhoneでは、アニメーションはこれまでに起こることはありません。 6ヶ月前のiPod Touchでは、上記の動作が見られます。 3GSで試したことはありません。 – edoloughlin

答えて

0

問題はdidSelectRowAtIndexPathメソッドにあると思います。ここで、cellForRowAtIndexPathメソッドを呼び出します。これは、クリックされた同じセルを返すことはないでしょう!返されたセルはおそらく新しいセルであり、画面には表示されず、アニメーションイメージのものが表示されます。しかし...それは見えません。

私はあなたがdidSelectRowAtIndexPathではなく、別の方法で長いクリックを処理すると仮定しますか?

cellForRowAtIndexPathメソッドの中で、セルがtableview自体によって要求されたポイント(またはそのタグに何かにタグを割り当てる)で、セルへの参照を保持する必要があります。そして、didSelectRowAtIndexPath方法は、セルの特定のインスタンスを検索する場合(参照することにより、またはタグにより、...)

・ホープこのことができます:)乾杯

+0

すべてのタッチは同じ方法で処理されますが、リードに感謝します。私はそれを行ってあげるよ。 – edoloughlin

+0

ええと、間違いなく同じセルです - 両方の方法でセル/自己ポインタの値を記録しようとしましたが、それらは同じです。 – edoloughlin

関連する問題