2014-10-14 8 views
2

У меня есть UIScrollView, который загружен несколькими UIImages, для этого примера он загружен с тем же изображением в 5 UIImages. Как я могу определить, какой из UIImages пользовательский кран?Определите, какой UIImage используется внутри uiscrollView


Это то, что я использую:

_thumbnailScroll.delegate = self; 

    [_thumbnailScroll setBackgroundColor:[UIColor blueColor]]; 
    [_thumbnailScroll setCanCancelContentTouches:NO]; 

    _thumbnailScroll.indicatorStyle = UIScrollViewIndicatorStyleWhite; 
    _thumbnailScroll.clipsToBounds = NO; 
    _thumbnailScroll.scrollEnabled = YES; 
    _thumbnailScroll.pagingEnabled = YES; 

    NSUInteger nimages = 0; 
    NSInteger tot=0; 
    CGFloat cx = 0; 
    for (nimages = 0; nimages < 5 ; nimages++) { 

     UIImage *image = [UIImage imageWithContentsOfFile:[path stringByAppendingPathComponent:@"newPics/thumb/thumb1.png" ]]; 
     if (tot==5) { 
      break; 
     } 
     if (5==nimages) { 
      nimages=0; 
     } 

     UIImageView *imageView = [[UIImageView alloc] initWithImage:image]; 

     CGRect rect = imageView.frame; 
     rect.size.height = 150; 
     rect.size.width = 150; 
     rect.origin.x = cx; 
     rect.origin.y = 0; 

     imageView.frame = rect; 


     [_thumbnailScroll addSubview:imageView]; 
     _thumbnailScroll.userInteractionEnabled = YES; 
     // [imageView release]; 

     cx += imageView.frame.size.width+100; 
     tot++; 
    } 

    //self.pageControl.numberOfPages = nimages; 
    [_thumbnailScroll setContentSize:CGSizeMake(cx, [_thumbnailScroll bounds].size.height)]; 

Есть идеи?

ответ

0

использовать это для крана прослушивание внутри петли.

UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(onSingleTapGestureRecognized:)]; 
singleTap.numberOfTapsRequired = 1; 
singleTap.numberOfTouchesRequired = 1; 
singleTap.delegate = self; 
[imageview1 addGestureRecogniser:singleTap]; 
[singleTap1 release]; 

    imageview1.userInteractionEnabled = YES; 

и

метод действия определяется MANIAK_dobrii.

+0

Это избыточно. –

0

Вы можете использовать -hitTest:withEvent:, чтобы получить представление, что нужно, например, если добавить UITapGestureRecognizer к вашему _thumbnailScroll вы можете сделать это следующим образом:

// Add gesture recognizer to a superview of imageviews (i.e. _thumbnailScroll) 
UITapGestureRecognizer *singleTapGR = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(onSingleTapGestureRecognized:)]; 
[_thumbnailScroll addGestureRecogniser:singleTapGR]; 
... 
// Implement it on your controller (who self was above) 
- (void)onSingleTapGestureRecognized:(UITapGestureRecognizer *)singleTapGestureRecognizer 
{ 
    UIView *tappedView = [_thumbnailScroll hitTest:[singleTapGestureRecognizer locationInView: _thumbnailScroll] withEvent:nil]; 

    // check if tappedView is one of your UIImageViews. 
    // tapped view will be one of your _thumbnailScroll subviews or itself 
    // so you use just use this information later 
} 

Добавление жеста распознавани к каждому UIImageView является излишним, если вам только нужно знать, какой из них был использован.

+0

не упоминается, как добавить, жест распознавания с изображением. не объяснено должным образом. –

+0

@sheshnath Что вы имеете в виду? Я только что расширил свой первоначальный ответ, и это совершенно ясно. Я рассматриваю ваше поведение как оскорбительное и неконструктивное. –

0

есть несколько способов сделать это . одним из способов является добавление UITapGestureRecognizer на каждом UIImageView. установите селектор для UITapGestureRecognizer как

UITapGestureRecognizer *tap=[[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(imageTapped:)]; 

[imageView addGestureRecognizer:tap]; 

and in imageTapped: mathod 

-(void)imageTapped:(UITapGestureRecognizer*)recognizer{ 
    UIImageView *imgView=(UIImageView*)[recognizer view]; 

} 

Не забудьте включить взаимодействие с пользователем для UIImageView. потому что он отключен по умолчанию

Смежные вопросы