2016-05-13 2 views
-1

Ich erstellte Arrays von ImageViews in UIScrollView programmgesteuert und machte Benutzer dann interaktiv durch Zuweisen von ihnen Tippen Geste. Nun möchte ich unterscheiden, welche Bildansicht angeklickt wird, damit ich Bilder von angeklicktem imageView bekommen kann. Allerdings konnte ich ihnen kein anderes Tag zuweisen. Hier ist mein Code. Ich füge 15 Bilder Ansichten hinzu.Wie Array von ImageViews mit Tag zuweisen und verwenden

for (int i = 0; i < 15; i++) { 
     originx = ((_imageView.frame.size.width+5)*i); //Calculate origin x for each image view. 

    _imageView = [[UIImageView alloc]initWithFrame:CGRectMake(originx, self.view.frame.origin.y+5, imageViewHeightWidth, imageViewHeightWidth)]; 

    [_imageView setBackgroundColor:[ UIColor colorWithRed:191.0/255.0 green:65.0/255.0 blue:78.0/255.0 alpha:0.5]]; 
    //_imageView.layer.cornerRadius = 10.0; 
    _imageView.image = [UIImage imageNamed:[_imgArray objectAtIndex:i]]; 

    //Enabling user interaction for gesture. 
    [_imageView setUserInteractionEnabled:YES]; 
    [_imageView setMultipleTouchEnabled:YES]; 

    //Tap Gesture enabled. 
    _gesture =[[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(tapTheImage:)]; 
    _gesture.numberOfTapsRequired = 1; 

    //Add a tap gesture. 
    [_imageView addGestureRecognizer:_gesture]; 

    //Assigning the tag to image View. 
    _imageView.tag = 200+i; 

    //Adding image in to scroll view. 
    [_gallaryScrollView addSubview:_imageView];  
} 

//Here i am getting same tag value for every imageView. i.e. "214". 
-(void)tapTheImage:(id)sender 
{ 
    NSLog(@"The tag value of imagView is%ld",(long)[_imageView tag]); 
} 
+0

Ich verstehe nicht, die Bedeutung der Tags in der Frage. Ein 'UITapGestureRecognizer' sagt Ihnen nur, welche Ansicht angezapft wurde, oder nicht, also warum brauchen Sie Tags? Warum verwenden Sie statt einer lokalen Variable die Instanzvariable '_imageView'? – trojanfoe

+0

In diesem Fall muss kein Tag festgelegt werden. Sie können imageview von recognizer.view bekommen! – Lion

Antwort

3

ändern TapTheImage Methode

-(void) TapTheImage:(UITapGestureRecognizer *)gestureRecognizer{ 

    //Get the View 
    UIImageView *tableGridImage = (UIImageView*)gestureRecognizer.view; 
    NSLog(@"%d",tableGridImage.tag); 
} 
0

Sie sind nicht ein neues Objekt der UIImageView zu schaffen. Ändern Sie die Zeile

_imageView = [[UIImageView alloc]initWithFrame:CGRectMake(originx, self.view.frame.origin.y+5, imageViewHeightWidth, imageViewHeightWidth)]; 

zu

UIImageView *_imageView = [[UIImageView alloc]initWithFrame:CGRectMake(originx, self.view.frame.origin.y+5, imageViewHeightWidth, imageViewHeightWidth)]; 
Verwandte Themen