Жест смахивания iOS5 для переключения изображений — запрошена справка

#xcode #uiview #uiimageview #uigesturerecognizer

#xcode #uiview #uiimageview #uigesturerecognizer

Вопрос:

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

Итак. Я пытаюсь создать анимацию 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];
}
  

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

Комментарии:

1. Вы подключили распознаватель жестов к рассматриваемому представлению?

Ответ №1:

Если вы на самом деле не настроили UIGestureRecognizers и не добавили их в свой view, вы не получите никаких событий, отправленных на ваш ViewController. Итак, вам нужно прикрепить распознаватели пользовательского интерфейса к представлению, которое будет перехватывать прокрутки. Например, в вашем методе 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];
  

Удачи!

Комментарии:

1. Тим, спасибо, но он жесты есть. На самом деле у меня работали жесты, но страницы были пустыми. Я получил страницы для отображения изображения. (по крайней мере, в файлах журнала), но теперь жесты остановлены.. Я проверю, связаны ли жесты с этим представлением. Они могут быть в делегате приложения…

Ответ №2:

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