1


1

UITableViewCell - タッチの長さによって異なる動作

私はUITableViewCellサブクラスで画像をアニメートしようとしています。 セルのタップが約1/2秒以上の長さのときに機能します。 タップを短くすると、セルが選択されますが、アニメーションは実行されません。

私のView Controllerには、次のものがあります。

- (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 Start animating");
    [imageView startAnimating];
}

私のログでは、わかりました

_ _ 2009-07-02 22:02:55.907 MyProg [1797:20b] Flash image …​

2009-07-02 22:02:55.912 MyProg [1797:20b]>アニメーションの開始

2009-07-02 22:02:59.455 MyProg [1797:20b] Flash image …​

2009-07-02 22:02:59.460 MyProg [1797:20b]>アニメーションの開始

2009-07-02 22:03:02.463 MyProg [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]>アニメーションを開始 _ _

上記は「ショート」と「ロング」のタッチの組み合わせによるものです。 長いタッチはセル選択と画像アニメーションをもたらし、短いものはアニメーションなしのセル選択をもたらしました。

さらに、短いタップの後にセル上で別の短いタップが続くと、アニメーションが始まります。

1 Answer


0


問題はdidSelectRowAtIndexPathメソッドにあると思います。 そこで、cellForRowAtIndexPathメソッドを呼び出します。これは、クリックされたセルと同じセルを返すことはおそらくないでしょう。 返されたセルはおそらく画面上に表示されていない新しいセルです。 しかし…​ 見えません。

私はあなたが別の方法で長めのクリックを処理すると思いますか?

cellForRowAtIndexPathメソッドで、セルがtableview自体から要求された時点(またはそれにタグを割り当てるなど)で、セルへの参照を保持する必要があります。 次に、didSelectRowAtIndexPathメソッドがセルの特定のインスタンスを(参照によって、またはタグによって)検索する。

これが役立つことを願っています:)