У меня есть подпредставление внутри представления.Это представление имеет PanGestureRecognizer.Я хочу, чтобы пользователь мог увеличивать внутри веб-просмотра, перемещаться, уменьшать и т. Д. Но я хочу, чтобы, когда пользователь достигал левого края веб-просмотра, распознаватели жестов в веб-представлении игнорировались, и из представления отображался только PanGestureRecognizer.Позвонил.
Что ж, я выполнил это с помощью этого кода:
-(void)scrollViewDidScroll:(UIScrollView *)scrollView
{
float coordY = scrollView.contentOffset.y;
float correctionOffsetRightSide = scrollView.contentSize.width-webView.bounds.size.width;
if(scrollView.contentOffset.x <= 0)
{
[delegate viewOnlyRecognizeItsPan];
[scrollView setContentOffset:CGPointMake(0, coordY)];
}
else if (scrollView.contentOffset.x >= correctionOffsetRightSide)
{
[delegate viewOnlyRecognizeItsPan];
[scrollView setContentOffset:CGPointMake(correctionOffsetRightSide, coordY)];
}
}
-(void)viewOnlyRecognizeItsPan
{
for (UIGestureRecognizer *gesture in [[[[arrayDeAbas objectAtIndex:currentViewTag] webView] scrollView] gestureRecognizers])
{
[gesture requireGestureRecognizerToFail:panRecognizer];
}
}
"arrayDeAbas" - это mutableArray, который хранит веб-просмотры.
Моя проблема: после пользователяприкоснувшись к кнопке, мне нужно сбросить «жесты», чтобы больше не требовалось, чтобы panRecognizer перестал работать.Как я мог это сделать?
РЕДАКТИРОВАНИЕ: Хорошо, я нашел решение.Вместо того, чтобы использовать requireGestureRecognizerToFail :, я могу просто установитьEnablle в YES или NO.
-(void)turnPanON
{
for (UIGestureRecognizer *gesture in [[[[arrayDeAbas objectAtIndex:currentViewTag] webView] scrollView] gestureRecognizers])
{
gesture.enabled = NO;
}
}
-(void)turnPanOFF;
{
for (UIGestureRecognizer *gesture in [[[[arrayDeAbas objectAtIndex:currentViewTag] webView] scrollView] gestureRecognizers])
{
gesture.enabled = YES;
}
}