我的视图控制器具有以下视图层次结构:
UIView
'- UIScrollView
'- UIWebView
'- UIWebView
'- ... more UIWebViews
UIScrollView启用了分页,每个页面都包含一个UIWebView。 UIScrollView也占据整个屏幕,UIWebView也是如此。
现在我的问题是我需要检测整个屏幕上的触摸。我猜UIScrollView以某种方式占用了大部分(因为UIWebView也包含滚动视图,事情变得更加复杂)。
我尝试了对每个视图进行子类化,然后尝试了touchesBegan和tap手势识别器,但没有尝试。我所能获得的只是UIWebView上非常不可靠的手势识别器,它在20次点击中工作过一次,非常随机且非常奇怪。
我该如何解决这个问题?我需要touchesBegan和touchesEnded或点击手势。
答案 0 :(得分:2)
我认为你需要找到一种构建UI的替代方法。 Apple明确地recommend against embedding scroll views inside scroll views:
你不应该嵌入UIWebView或 UIScrollView中的UITableView对象 对象。如果这样做,出乎意料 因为触摸会导致行为 两个对象的事件都可以 混淆和错误处理。
如果不知道自己要实现的目标,就很难能够提出有效的替代方案。标签?屏幕底部的滑动手势? webviews中的链接?
答案 1 :(得分:0)
您可以这样做,但是您需要小心触摸事件,以便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];
}