Разобрался.В моем случае мой UIScrollView содержал UIImage, который я позволил масштабировать.Очевидно, это означало, что прокрутка включена, и у UIScrollView возникли проблемы с распознаванием жестов, предназначенных для прокрутки и прокрутки (следующее, предыдущее изображение).
Ключ в моем случае - отключить прокрутку в представлении прокрутки, когдаизображение не увеличивается, а восстанавливается при его увеличении. Это обеспечивает ожидаемое поведение.
Важнейшим элементом является помещение в делегат представления прокрутки следующих элементов:
- (void)scrollViewDidZoom:(UIScrollView *)scrollView {
if (scrollView.zoomScale!=1.0) {
// Zooming, enable scrolling
scrollView.scrollEnabled = TRUE;
} else {
// Not zoomed, disable scrolling so gestures get used instead
scrollView.scrollEnabled = FALSE;
}
}
Я также должен инициализировать представление прокрутки с отключенной прокруткой.Чтобы включить масштабирование, просто предоставьте изображение при вызове делегата
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView {
// Return the scroll view
return myImage;
}
и установите несколько параметров в viewDidLoad для распознавателей масштабирования и настройки жестов
- (void)viewDidLoad {
[super viewDidLoad];
myScrollView.contentSize = CGSizeMake(myImage.frame.size.width, myImage.frame.size.height);
myScrollView.maximumZoomScale = 4.0;
myScrollView.minimumZoomScale = 1.0;
myScrollView.clipsToBounds = YES;
myScrollView.delegate = self;
[myScrollView addSubview:myImage];
[self setWantsFullScreenLayout:TRUE];
myScrollView.scrollEnabled = FALSE;
UISwipeGestureRecognizer *recognizer =
[[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleSwipeFrom:)];
recognizer.delaysTouchesBegan = TRUE;
[myScrollView addGestureRecognizer:recognizer];
[recognizer release];
recognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleSwipeFrom:)];
recognizer.direction = UISwipeGestureRecognizerDirectionLeft;
[myScrollView addGestureRecognizer:recognizer];
[recognizer release];
[myScrollView delaysContentTouches];
}