#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 ноября, но образцы кода доступны для предварительных покупателей..