iOS5 Swipe Gesture для переключения изображений - требуется помощь - PullRequest
0 голосов
/ 29 октября 2011

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

Итак. Я пытаюсь создать анимацию UIView. Я вижу первое изображение, но жесты не работают ..

Буду признателен за любую помощь ..

Вот код для одной из двух подпрограмм плюс инициализация жеста:

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {
    NSLog(@"%s", __FUNCTION__);
    return YES;
}


- (void)handleSwipe:(UISwipeGestureRecognizer *)recognizer {

     NSLog(@"%s", __FUNCTION__);
     switch (recognizer.direction)
     {
          case (UISwipeGestureRecognizerDirectionRight):
               [self performSelector:@selector(previousPage:)];
               //[self previousPage];
               break;               

          case (UISwipeGestureRecognizerDirectionLeft): 
               [self performSelector:@selector(nextPage:)];
               //[self nextPage];
               break;

          default:
               break;
     }     
}     



- (void)nextPage {
     [UIView beginAnimations:@"fadeOut" context:nil];
     [UIView setAnimationDelay:0.0f];
     [UIView setAnimationDuration:0.5f];
     [UIView setAnimationCurve:UIViewAnimationCurveEaseIn];
     pageNumber ++;
     if(pageNumber > maxInfoPages)
     {
          pageNumber = 1;
     }
     NSString *imageName = [NSString stringWithFormat:@"infoPage%i.png", pageNumber];
     imageView.image = [UIImage imageNamed:imageName];     
     NSLog(@"imageName is: %@", imageName);                                    
     NSLog(@"imageView is: %@", imageView);
     imageView.clipsToBounds=YES;     
     self.view = imageView;
     [UIView commitAnimations];
}

Большое спасибо

Ответы [ 2 ]

0 голосов
/ 31 октября 2011

Я закончил тем, что переключил свой оригинальный код на код PageViewController. Примеры из этой книги взяты из новой книги Эрики Садун: «Поваренная книга разработчика iOS5». Книга будет опубликована 14 ноября, но образцы кода доступны для предварительных покупателей. .

0 голосов
/ 29 октября 2011

Если вы на самом деле не настроили UIGestureRecognizer и не добавили их в свой просмотр, вы не получите никаких событий, отправленных вашему viewController. Поэтому вам нужно прикрепить UIGestureRecognizer к представлению, которое будет перехватывать пролистывания. Например, в вашем методе viewDidLoad вы должны сделать что-то вроде:

UISwipeGestureRecognizer *rightSwipe=[[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleSwipe:)];
rightSwipe.direction=UISwipeGestureRecognizerDirectionRight;

UISwipeGestureRecognizer *leftSwipe=[[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleSwipe:)];
leftSwipe.direction=UISwipeGestureRecognizerDirectionLeft;

[self.view addGestureRecognizer:leftSwipe];
[self.view addGestureRecognizer:rightSwipe];

// leave out the following if using ARC
[leftSwipe release];
[rightSwipe release];

Удачи!

...