的UIWebView中的UIScrollView和触摸通知
问题描述:
我有看法有以下几种观点层次控制器:的UIWebView中的UIScrollView和触摸通知
UIView
'- UIScrollView
'- UIWebView
'- UIWebView
'- ... more UIWebViews
的UIScrollView有分页启用,每个页面都包含一个UIWebView的。 UIScrollView也占用整个屏幕,UIWebView。
现在我的问题是,我需要检测整个屏幕上的触摸。我猜UIScrollView以某种方式吃掉了大部分(因为UIWebView也包含滚动视图,事情变得更加复杂)。
我试着对这些视图中的每一个进行子类化,并尝试了touchesBegan和轻击手势识别器,但没有任何结果。我所能得到的是在UIWebView上非常不可靠的手势识别器,它在20次点击中工作一次,非常随机且非常奇怪。
我应该如何解决这个问题?我需要touchesBegan和touchesEnded或点击手势。
答
我想你需要找到一种构建UI的替代方法。苹果明确recommend against embedding scroll views inside scroll views:
你不应该嵌入的UIWebView或 的UITableView对象的UIScrollView 对象。如果这样做,意外 行为可能会导致因触摸 事件为两个对象可能 混淆和错误处理。
不知道你想达到什么目标,很难建议一个有效的选择。标签?屏幕底部的轻扫手势? webviews内的链接?
答
你可以做到这一点,但你需要小心触摸事件,以便scrollview不处理用于webview的触摸。
下面代码的导入行是[[[wv1 subviews] lastObject] setScrollEnabled:NO];
for (NSString *link in links) {
UIWebView *wv1 = [[UIWebView alloc] initWithFrame:frame];
NSURL *aurl = [site getUrl:link local:YES];
[wv1 loadRequest:[NSURLRequest requestWithURL:aurl]];
[[[wv1 subviews] lastObject] setScrollEnabled:NO];
[scrollView addSubview:wv1];
[wv1 release];
}
我不认为有如何建立我的用户界面的其他方式。我需要UIWebView呈现格式化文本,我需要滚动视图才能在这些Web视图页面之间进行切换。我想要检测屏幕左侧和右侧的触摸,以便能够进入下一个/上一页(补充标准滚动视图的滑动功能) – Lope 2011-04-04 09:33:27
看起来你对混合滚动视图是正确的。当我禁用webview上的用户交互时,一切正常。在另一方面,我失去了复制功能,这将是很好的(我不使用链接或任何其他交互的东西) – Lope 2011-04-04 09:41:49
在屏幕的左侧和右侧的长,薄按钮? – 2011-04-04 09:44:00