2012-03-20 3 views
2

Мне нужно поймать действие салфетки только на специальной площади. Но отладчик сообщает unrecognized selector sent to instanceНепризнанный селектор при ударе

- (void)viewDidLoad 
{ 
    UISwipeGestureRecognizer *swipeLeft = [[UISwipeGestureRecognizer alloc] 
      initWithTarget:self.viewName action:@selector(didSwipe:)]; 
    swipeLeft.direction = UISwipeGestureRecognizerDirectionLeft; 
    [self.view addGestureRecognizer:swipeLeft]; 
} 

-(void)didSwipe:(UISwipeGestureRecognizer*)swipe{ 
    NSLog(@"swiped left"); 
} 

что-то не так?

ответ

3

Возможно, вы хотите, чтобы цель была self не self.imageName.


Редактировать В ответ на ваши комментарии.

UISwipeGestureRecognizer *swipeLeft = [[UISwipeGestureRecognizer alloc] 
     initWithTarget:self action:@selector(didSwipe:)]; 
swipeLeft.direction = UISwipeGestureRecognizerDirectionLeft; 
[self.viewName addGestureRecognizer:swipeLeft]; 

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

+0

ну, это действительно работает, но со всем экраном. И как я могу привести этот жест только тогда, когда он начнется в специальной области? –

+0

Даже не так. Мне нужно, чтобы салфетки не работали нигде, кроме области смазки :) –

+0

Если это нужно в определенной области, вы не должны добавлять распознаватель жестов ко всему 'self.view'. Попробуйте добавить его в подзаголовок, который находится в правильном месте, где вы хотите, чтобы пользователь провёл. – MishieMoo

6

Ваш распознаватель жестов имеет аргумент, поэтому он должен быть @selector(didSwipe:) (Обратите внимание на двоеточие).

+0

Я пробовал оба варианта. Одна и та же. –

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