Я изо всех сил пытаюсь получить то поведение, которое мне хотелось бы от распознавателей жестов, в частности, отменить некоторые жесты, если другие стреляли.
У меня есть scrollView для пейджинга и нескольких подпредставлений на каждой странице. Я добавил распознаватель сенсорных жестов для перехода к следующей или предыдущей странице, если пользователь нажимает вправо или влево на странице.
// Add a gesture recogniser turn pages on a single tap at the edge of a page
UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapGestureHandler:)];
tapGesture.cancelsTouchesInView = NO;
[self addGestureRecognizer:tapGesture];
[tapGesture release];
и мой обработчик жестов:
- (void) tapGestureHandler:(UIGestureRecognizer *) gestureRecognizer {
const CGFloat kTapMargin = 180;
// Get the position of the point tapped in the window co-ordinate system
CGPoint tapPoint = [gestureRecognizer locationInView:nil];
// If the tap point is to the left of the page then go back a page
if (tapPoint.x > (self.frame.size.width - kTapMargin)) [self scrollRectToVisible:pageViewRightFrame animated:YES];
// If the tap point is to the right of the page then go forward a page
else if (tapPoint.x < kTapMargin) [self scrollRectToVisible:pageViewLeftFrame animated:YES];
}
Все работает хорошо, кроме случаев, когда у меня есть подпредставление на странице, на котором есть кнопки. Я хочу, чтобы можно было игнорировать нажатие, чтобы перевернуть страницу, если пользователь касается кнопки во вспомогательном окне, и я не могу понять, как это сделать.
Приветствия
Dave