UIWebView不会滚动堆栈视图,子视图
问题描述:
我正在应用程序中动态构建大量堆栈视图,并且我最初遇到了描述here的事件处理问题。该帖子解决了我的大部分问题,但我仍然有一个问题。当用户点击rss供稿项目的摘要时,我只用一个“关闭”按钮创建一个几乎全屏的web视图。关闭按钮有效,但Web视图拒绝滚动。我使用上述链接中描述的代码的变体,这些代码旨在用于屏幕始终为1024x768的屏幕上的“屏幕”和“小工具”,但无需处理事件,但屏幕上的其他视图和按钮处理事件。一个“屏幕”有一个永远不会改变的基础模板和顶部的另一个“屏幕”,确实会改变。处理“小工具”事件调度的代码是:UIWebView不会滚动堆栈视图,子视图
@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”和“2 BTN”(见图)。我也看到,当我尝试滚动它但它仍然不滚动时,这个相同的代码返回我的UIWebVIew。 以下是意见如何堆叠图:
也许UIWebView的滚动在绕开则hitTest黑客一些特殊的方式来处理?
答
我发送了一封支持电子邮件给苹果关于此事,他们可以真正说的是“UIWebView做了很多自定义触摸处理,让它难以捉摸hitTest”。所以,如果你有这种情况并想使用这个hitTest覆盖解决方案,不要指望它适用于UIWebView。在很多情况下,我可能不得不做一些设计更改,以便不以这种方式堆叠我的视图。