我在UIScrollView中有多个自定义UIWebView的子视图。我已经在UIViewController中实现了UIWebView的触摸方法,但是这些方法并未被调用。
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { }
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event { }
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event { }
我在其他地方读到,UIScrollView 将会消耗事件。这很有道理,但是 UIWebView 不应该在 UIScrollView 之前接收触摸事件吗?实际情况可能是 UIWebBrowserView(UIWebView 的子视图)正在消耗事件。然而,这个类无法被子类化,因此我无法将事件发送到父视图链以达到 UIScrollView。我在苹果 iOS 文档中读到,永远不应该将 UIWebView 放置在 UIScrollView 中,但出于我的目的,我必须这样做。
所以我的问题是:如何使我的自定义 UIWebView(它们是 UIScrollView 的子视图)接收触摸事件?
我的控制器和视图设置如下:
HomeViewController.h /.m /.xib
HomeView.h /.m (is a UIScrollView)
DashboardViewController.h /.m /.xib (custom UIWebView's)
HomeViewController是从一个包含自定义视图HomeView的Nib文件中加载的。DashboardViewController也是从一个Nib文件中加载的,它包含一些标签、滑块等(请注意这里没有自定义视图 - 我在这里没有子类化UIView)。
HomeViewController动态加载多个DashboardViewControllers,并将其视图添加到HomeView中。
DashboardViewController *dashboardViewController = [[DashboardViewController alloc] initWithNibName:@"DashboardViewController" bundle:[NSBundle mainBundle];
[homeView addSubview:dashboardViewController.view];