2012-01-07 3 views
1

У меня есть subview (UIImageView), добавленный в мой основной вид. Я хочу обнаружить ответвления только в subview, а затем запустить метод processTap.Gesturerecognizer на подзадаче, получение ошибки

Я получаю следующее исключение, когда оно обнаруживает щелчок.

"NSInvalidArgumentException 'причина:' - [UIImageView processTap]: непризнанным селектор послал к экземпляру"

Что-то, кажется, неправильно с @selector части.

Любые идеи?

- (void)viewDidLoad 
{ 
    // Create a uiimage view, load image 
    UIImageView *tapView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"tap zone.png"]]; 
    tapView.frame = CGRectMake(20, 50, 279, 298); 
    tapView.userInteractionEnabled = YES; 

    [self.view addSubview:tapView]; 

    // Initialize tap gesture recognizers 
    UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] 
            initWithTarget:tapView 
            action:@selector(processTap)]; 
    singleTap.numberOfTapsRequired = 1; 

    [tapView addGestureRecognizer:singleTap]; 

    [super viewDidLoad]; 
} 

- (void)processTap { 
    if (sessionRunning) { 
     tapCounter = tapCounter + 1; 
     _tapCount.text = [NSString stringWithFormat:@"%i",tapCounter]; 
    } 
}' 

ответ

3

Целью вашего распознавателя должно быть self.

// Initialize tap gesture recognizers 
UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] 
            initWithTarget:self 
            action:@selector(processTap)]; 

Вы предыдущую ошибку, потому что ваш tapView не имеет селектор называется processTap.

ПРИМЕЧАНИЕ

Из документации Apple:

мишень

Объект, который является получателем сообщений, отправленных действий приемником, когда он распознает жест. nil не является допустимым значением.

Итак, в этом случае получателем для вашего действия является контроллер, который реализует селектор processTap.

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