0

簡単なコードを使用して、いくつかの画像をUIScrollView. また、各画像のタッチを検出する別のコードを実装しました。

コードは次のとおりです。

(void)handleSingleTap:(UIGestureRecognizer *)sender
{

    int senderTagIs;

    senderTagIs = sender.view.tag;

    if (sender.view.layer.borderColor != [UIColor cyanColor].CGColor) {

        sender.view.layer.borderColor = [UIColor cyanColor].CGColor;

        UIImageView *showFullImage = (UIImageView *)[self.view viewWithTag:sender.view.tag+100];
        [showFullImage setTag:sender.view.tag+200];
        [self.view addSubview:showFullImage];
        showFullImage.hidden = NO;

        NSLog(@"Show tag is: %i", sender.view.tag);

    }
    else
    {
        sender.view.layer.borderColor = [UIColor whiteColor].CGColor;

        UIImageView *hideFullImage = (UIImageView *)[self.view viewWithTag:sender.view.tag+200];
        [hideFullImage setTag:sender.view.tag+100];
        hideFullImage.hidden = YES;

        NSLog(@"Hide tag is: %i", sender.view.tag);
    }

}

上記のコードは、境界線の色をシアンに設定し、 からの小さな画像をUIScrollView別のUIImageView.

しかし、私の問題は、1 つの画像がタッチされたときに、すべての画像を非表示にし、すべての画像の境界線の色を白に設定するオプションを設定できないことです。

例:最初の画像に触れると、コードが機能し、大きな UIImageView に触れた画像が表示され、触れた画像からUIScrollView境界線のシアン色が取得されます。

ここで、3 番目の画像をタッチすると、最初の画像が表示され、境界線の色がシアンになるので、最初の画像をもう一度タッチして無効にする必要がありますが、これは私が望むものではありません。

4

1 に答える 1

0

それで、ここでいくつかのことが起こっています。まず、画像のコレクションをスクロール ビューで表示しようとしていると想定しています。カスタム パディングを使用して、画像の周りに選択範囲があることを示します。これは、カスタム セルで UICollectionView を使用するためのテーラーメイドのように思えます。

詳細情報がなければ、古い色をリセットしていません。選択した画像への参照をクラス変数として保持するか、画像ビューが NSArray などのコレクション オブジェクトにあると仮定して、オブジェクトを反復処理し、それらのビューを非選択状態にリセットすることからメソッドを開始します。

ソリューションをハックするだけの場合は、2 番目のオプションが有効です。UICollectionView を使用することを強くお勧めします。特に経験がない場合は、最初は少し手間がかかりますが、学ぶ価値は十分にあります。UICollectionViewに関する優れたチュートリアルを次に示します。

于 2013-10-01T01:14:03.683 に答える