Объявление UITouchGestures? - PullRequest
       3

Объявление UITouchGestures?

1 голос
/ 21 апреля 2011

Я работаю над использованием метода UISwipeGestureRecognizerDirectionRight для изменения представлений в приложении, и я использовал следующий код в главном файле контроллера представления, но кажется, что мне нужно определить жест после звездочки и объявить его поскольку эта ошибка сборки заявляет: "swipeGesture undeclared"

-(void)createGestureRecognizers {
UISwipeGestureRecognizerDirectionRight * swipeGesture = [[UISwipeGestureRecognizerDirectionRight alloc]
                                                        initWithTarget:self
                                                        action:@selector (handleSwipeGestureRight:)];
[self.theView addGestureRecognizer:swipeGesture];
[swipeGesture release];
}

-(IBAction)handleSwipeGestureRight {
NC2ViewController *second2 =[[NC2ViewController alloc] initWithNibName:@"NC2ViewController" bundle:nil];
second2.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
[self presentModalViewController:second2 animated:YES];
[second2 release];

}

Итак, мой вопрос: как мне объявить «swipeGesture» после звездочки в заголовочном файле или я сделал что-то не так?

Спасибо

1 Ответ

1 голос
/ 21 апреля 2011

UISwipeGestureRecognizerDirectionRight - это значение для четырех возможных направлений.Это не тот класс, который вы создаете для распознавания жестов.Вместо этого используйте UISwipeGestureRecognizer:

UISwipeGestureRecognizer *swipeGesture = [[UISwipeGestureRecognizer alloc] 
                               initWithTarget:self 
                               action:@selector (handleSwipeGestureRight:)];

//Set the direction you want to detect by setting 
//the recognizer's direction property...
//(the default is Right so don't really need it in this case)
swipeGesture.direction = UISwipeGestureRecognizerDirectionRight;

[self.view addGestureRecognizer:swipeGesture];
[swipeGesture release];

Кроме того, метод обработчика должен быть:

-(IBAction)handleSwipeGestureRight:(UISwipeGestureRecognizer *)swipeGesture {

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

Наконец, void более подходит, чем IBAction в обработчике, поскольку он не будетбыть вызванным из объекта в xib.Однако, поскольку IBAction и void - это одно и то же, это не вызовет проблем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...