2012-05-09 4 views
0

Прежде всего, я просто хочу сказать, что я начинаю с Objective-C.Одиночное обнаружение касания в UIScrollView

Вот макет моего Projet: MainView> ScrollView внутри MainView> ImageView внутри ScrollView

Оба MainView и Scrollview созданы в раскадровку. Все imageView создаются программно и как subview в scrollView.

У меня есть только один класс для просмотра ViewController.

вот мой вопрос: Как я могу обрабатывать одно касание ImageView внутри своего scrollView? Позвольте мне знать, если что-то неясно.

UPDATE:

NSString *imagePath = [NSString stringWithFormat:@"%@/%@ (%i).png", path, path, nbrImage]; 
      CGRect myImageRect = CGRectMake(40, 25 + (line*lenght), 75, 75); 
      self.img = [[UIImageView alloc] initWithFrame:myImageRect]; 
      [self.img setImage:[UIImage imageNamed:imagePath]]; 

      UITapGestureRecognizer* singleTapGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleSingleTap:)]; 
      singleTapGestureRecognizer.numberOfTapsRequired = 1; 
      singleTapGestureRecognizer.numberOfTouchesRequired = 1;  
      singleTapGestureRecognizer.cancelsTouchesInView = NO; 
      [self.img addGestureRecognizer:singleTapGestureRecognizer]; 

      [self.scrollView addSubview:self.img]; 

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

    UIImageView* imageView = (id)recognizer.view; 
    NSLog(@"Test"); 
} 

EDIT: это работает, в @selector Я запись handleSingleTap вместо handleSingleTapFrom:

ответ

1

Вы можете добавить UIControl к вашему ImageView выполнить все, что вы хотите селектор в ответ одним касанием. Просто установите цвет фона, чтобы очистить, рамку к imageView.frame, добавить элемент управления как подвид вашего ImageView и сказать

[myControl addtarget:self action:@selector(whateverYouWantToDo) forControlEvents:UIConntrolEventTouchUpInside]; 

EDIT:

UIControl *myControl = [[UIControl alloc] initWithFrame:imageView.frame]; 
[myControl setBackgroundColor:[UIColor clearColor]]; 
[myControl addTarget:self action:@selector(doWork) forControlEvents:UIControlEventTouchUpInside]; 
[imageView addSubview:myControl]; 

затем просто реализовать метод DoWork сделать что бы вы ни пытались сделать. Возможно, я неправильно понял ваш вопрос, но если вы хотите выполнить действие, когда пользователь коснется изображения в вашем прокрутке, так это то, как я это сделал.

+0

ли я реализовать что-то вроде touchsBegin после этого? Можете ли вы просто показать пример? Спасибо :) – Benjamin

+0

Да, вы понимаете мой вопрос. Если пользователь касается Image1, я хочу отображать Image1 в mainView. Я отредактировал свое оригинальное сообщение – Benjamin

+0

Кроме того, вот ссылка на учебник, который позволяет понять, что я пытаюсь сделать. http://www.raywenderlich.com/130/how-to-write-a-custom-image-picker-like-uiimagepicker – geraldWilliam

1

Использовать UITapGestureRecognizer. НАПРИМЕР,

UITapGestureRecognizer* singleTapGestureRecognizer = [[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleSingleTap:)] autorelease]; 
    singleTapGestureRecognizer.numberOfTapsRequired = 1; 
    singleTapGestureRecognizer.numberOfTouchesRequired = 1;  
    singleTapGestureRecognizer.cancelsTouchesInView = NO; 
    [imageView addGestureRecognizer:singleTapGestureRecognizer]; 

С помощью метода обработчика:

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

    UIImageView* imageView = (id)recognizer.view; 
    ... 
} 
+0

'[[[UITapGestureRecognizer alloc] initWithTarget: self action: @selector (handleSingleTap :)] autorelease];' В этом коде, что такое 'handleSingleTape'? Метод, который я должен реализовать? Извините, если это тривиальный вопрос: s – Benjamin

+0

Вы правы, см. Мое редактирование или ссылку на подпись. – sergio

+0

Я отредактировал мое оригинальное сообщение с некоторым кодом – Benjamin