Нераспознанный селектор при свайпе

Мне нужно поймать действие свайпа только в специальной области. Но отладчик сообщает 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");
}

что случилось?


person Reshat Belyalov    schedule 20.03.2012    source источник


Ответы (2)


Вероятно, вы хотите, чтобы цель была self, а не self.imageName.


Изменить В ответ на ваши комментарии.

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

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

person MishieMoo    schedule 20.03.2012
comment
ну, это действительно работает, но со всем экраном. И как я могу поймать этот жест только тогда, когда он начинается в специальной области? - person Reshat Belyalov; 20.03.2012
comment
Даже не так. Мне нужно, чтобы свайп не работал нигде, кроме маленькой области :) - person Reshat Belyalov; 20.03.2012
comment
Если он должен быть в определенной области, вы не должны добавлять распознаватель жестов ко всему self.view. Попробуйте добавить его в подпредставление, которое находится в правильном месте, где вы хотите, чтобы пользователь провел пальцем. - person MishieMoo; 20.03.2012
comment
та же проблема, когда я создаю UIView viewName. Я просто не знаю, что писать в initWithTarget - person Reshat Belyalov; 20.03.2012
comment
Я отредактировал свой ответ выше. Дайте мне знать, если я могу прояснить что-нибудь еще. - person MishieMoo; 20.03.2012

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

person edc1591    schedule 20.03.2012