3

多くの画像を含むスクロールビューがあります。タップジェスチャを使用して選択しています。 ここに画像の説明を入力

選択画像はそのように設定されています。この部分は正常に完了しました。ここに画像の説明を入力

しかし、私の問題は、別のものをタップすると複数選択できることです。以前の選択を削除したいです。ここに画像の説明を入力

次の画像を選択すると、前の画像が選択解除されます。 ここに画像の説明を入力

すみません、説明が悪くて。

前もって感謝します。

スクロールビューを作成するコード

//below code are for create scroll view 



-(void)viewDidLoad{   
    scrollView.delegate = self;
 scrollView.scrollEnabled = YES;
 int scrollWidth = 70;
 scrollView.contentSize = CGSizeMake(scrollWidth,50);

    int xOffset = 0;

 for(int index=0; index < [imagesName count]; index++)
 {

  img = [[UIImageView alloc] init];
        [img setUserInteractionEnabled:YES];
  img.bounds = CGRectMake(0, 0, 60, 40);
  img.frame = CGRectMake(5+xOffset, 5, 60, 40);

        //below line add here
        img.image = [UIImage imageNamed:[imagesName objectAtIndex:index]];

        img.tag = 303 + index;

      //  [img.layer setBorderColor:[UIColor whiteColor].CGColor];
       // [img.layer setBorderWidth:2.0f];

        [Scrollimages insertObject:img atIndex:index];

        scrollView.contentSize = CGSizeMake(scrollWidth+xOffset,50);
        [scrollView addSubview:[Scrollimages objectAtIndex:index]];

       //xOffset += 170;

        xOffset += 70;
 }


    for (UIImageView *scrollimage in Scrollimages) {

           UITapGestureRecognizer *singleTapRecognizerInScroll = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(scrollViewsingleTappedInScrollMethod:)];

        singleTapRecognizerInScroll.delegate = self;

        singleTapRecognizerInScroll.numberOfTapsRequired = 1;
        singleTapRecognizerInScroll.numberOfTouchesRequired = 1;


        [scrollimage  addGestureRecognizer:singleTapRecognizerInScroll];

        }     
  }  
 -(void)scrollViewsingleTappedInScrollMethod:(UITapGestureRecognizer *)recognizer{

       scrollimageview = (UIImageView *)recognizer.view;

      //we select the image using tag.(contain many images)
    if ([scrollimageview tag] == 303) {

        selectLimitSet = 3;

        }

        }
4

3 に答える 3

4

画像を選択するときは、選択した画像への参照を保存します。次が選択されたら、現在のイメージビューの選択を解除し、タップジェスチャーを取得した新しい場所を選択します。1.現在選択されている画像ビュータグを記憶するプロパティを作成します@property (nonatomic, assign) NSInteger currentTag;

-(void)onTapGesture(id)sender{
    if(self.currentTag == sender.tag){
     //tap on previously selected image
     //you can deselect same image or any thing else you want to do.
     return;
    }
    UIImageView *prevImageView = [self.view viewWithTag:self.currentTag];
    //deselect prevImageView, if you want to change image do it now
    UIImageView *selectedImageView = (UIImageView*)sender; 
    self.currentTag = selectedImageView.tag;
   //select selectedImageView now, change image now.
}
于 2013-10-02T15:03:21.697 に答える
3

UICollectionView を使用します。それはあなたのためにすべての仕事をします。

于 2013-10-02T15:04:48.423 に答える
3
   scrollView.delegate = self;
        scrollView.scrollEnabled = YES;
        int scrollWidth = 70;
        scrollView.contentSize = CGSizeMake(scrollWidth,50);

        int xOffset = 0;

        for(int index=0; index < [imagesName count]; index++)
        {

            img = [[UIImageView alloc] init];
            [img setUserInteractionEnabled:YES];
            img.bounds = CGRectMake(0, 0, 60, 40);
            img.frame = CGRectMake(5+xOffset, 5, 60, 40);

            //below line add here
            img.image = [UIImage imageNamed:[imagesName objectAtIndex:index]];

            img.tag = 303 + index;

            //add below code is here


//take A UIView * displayView make it global (create Instance).

            displayView = img;
            img.alpha = 1.0;


            [Scrollimages insertObject:img atIndex:index];

            scrollView.contentSize = CGSizeMake(scrollWidth+xOffset,50);
            [scrollView addSubview:[Scrollimages objectAtIndex:index]];

            //xOffset += 170;

            xOffset += 70;


        }

-(void)scrollViewsingleTappedInScrollMethod:(UITapGestureRecognizer *)recognizer{

    //selectedImageInScrollView it's a integer value

    selectedImageInScrollView = recognizer.view.tag;

// set your instance displayView Alpha & set tag them. 

//displayView is first deselect your first view then select next image

    displayView.alpha = 1.0;
    displayView =recognizer.view;

    recognizer.view.alpha = 0.5;


    if (selectedImageInScrollView == 303) {

        selectLimitSet = 3;
        NSLog(@"selectLimitSet : %i",selectLimitSet);

    }
}
于 2013-10-16T06:22:05.463 に答える