2013-10-02 2 views
1

Я не следующий код, который добавляет UITapGestureRecognizer к UIImageView:UIImageView GestureRecognizer Не Рабочая

UIImageView *circleView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"red_circle"]]; 
    [circleView setUserInteractionEnabled:YES]; 

    [circleView setFrame:CGRectMake(20 + 60 * ([self.tasks count] - 1), self.bounds.size.height - 300, 44, 44)]; 

    // register gestures 
    [self registerGestureRecognizer:circleView]; 

    [self addSubview:circleView]; 


-(void) registerGestureRecognizer:(UIImageView *) circleView 
{ 
    UITapGestureRecognizer *tapGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapped:)]; 
    tapGestureRecognizer.numberOfTapsRequired = 1; 
    tapGestureRecognizer.delegate = self; 
    [circleView addGestureRecognizer:tapGestureRecognizer]; 
} 

-(void) tapped:(UITapGestureRecognizer *) recognizer 
{ 
    NSLog(@"tapped!"); 
} 

Но когда я прикасаюсь изображение просверленных метод не вызывается! Я что-то упускаю.

В UIScrollView добавлен вид, содержащий UIImageView.

UPDATE: Вот код, который добавляет TaskView в UIScrollView

-(TaskView *) createTaskView 
{ 
    TaskView *taskView = [[TaskView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)]; 

    taskView.userInteractionEnabled = YES; 

    taskView.backgroundColor = [UIColor clearColor]; 

    [taskView.textView setDelegate:self]; 

    return taskView; 
} 

-(void) initializeScrollViewWithTasks 
{ 
    for(int day = 1; day <= 7; day++) 
    { 
     TaskView *taskView = [self createTaskView]; 
     taskView.tag = day; 
     // [_taskViews addObject:taskView]; 
     [self.scrollView addSubview:taskView]; 
    } 
} 

РЕШЕНИЕ:

Полностью моя вина! Я делал что-то безумное, добавляя элементы в UIScrollView. Починил это!

+0

Работает отлично для меня. Возможно, вам нужно включить взаимодействие с пользователем на 'self' и, возможно, наблюдать за цепочкой. – Kevin

+0

UIImageView содержится внутри UIView, а UIView добавляется в UIScrollView. –

+0

circleView.userInteractionEnabled = YES; и убедитесь, что нет изображения UIView для просмотра изображений, которые перехватывают события нажатия –

ответ

1

Вам необходимо установить это свойство userInteractionEnabled вашего UIImageView в YES. Замените ваш код следующим образом:

-(void) registerGestureRecognizer:(UIImageView *) circleView 
{ 
    UITapGestureRecognizer *tapGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapped:)]; 
    tapGestureRecognizer.delegate = self; 
    tapGestureRecognizer.numberOfTapsRequired = 1; 
    circleView.userInteractionEnabled=YES; 
    [circleView addGestureRecognizer:tapGestureRecognizer]; 
} 

-(void) tapped:(UITapGestureRecognizer *) recognizer 
{ 
    NSLog(@"tapped!"); 
} 
+0

Нет setter method 'setIsUserInteractionEnabled:' для назначения свойства –

+0

посмотреть мой код: 'circleView.userInteractionEnabled = YES;' –

+0

Спасибо! Просто сделал это изменение, но все равно безуспешно. –

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