Я работаю над приложением, которое динамически создает множество стеков, и у меня изначально были проблемы с обработкой событий, описанные здесь . Этот пост решил большинство моих проблем, но у меня все еще есть одна проблема. Когда пользователь нажимает на сводку элемента RSS-канала, я создаю почти полноэкранный веб-вид с помощью всего одной кнопки «Закрыть». Кнопка закрытия работает, но веб-просмотр отказывается прокручивать. Я использую вариант кода, описанного в приведенной выше ссылке, который предназначен для работы с "экранами" и "гаджетами" на тех экранах, где экраны всегда имеют разрешение 1024x768, но никогда не требуют обработки событий, кроме других представлений и кнопок на этих экранах. иметь дело с событиями. «Экран» имеет базовый шаблон, который никогда не меняется, и другой «экран» сверху, который действительно изменяется. Код для обработки события «гаджет»:
@implementation ContainerView
- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event {
for (int i=self.subviews.count-1; i >= 0; i--) {
UIView *view = [self.subviews objectAtIndex:i];
BOOL isContainerView = [view isMemberOfClass:[ContainerView class]];
if (isContainerView) {
return [super hitTest:point withEvent:event];
}
else {
CGPoint viewPoint = [view convertPoint:point fromView:self];
if ([view pointInside:viewPoint withEvent:event]) {
return view;
}
}
}
return nil;
}
@end
Это правильно отправляет события «Btn 1» и «Btn 2» (см. Диаграмму). Я также вижу, что этот же код возвращает мой UIWebVIew, когда я пытаюсь его прокрутить, но он все еще не прокручивается.
Ниже приведена схема компоновки представлений:
схема
Может быть, прокрутка UIWebView обрабатывается особым образом, чтобы обойти взлом HitTest?