UIWebView内部的UIScrollView消耗触摸事件

mdu*_*pls 5 cocoa-touch objective-c uiscrollview uiview ios

我有多个自定义UIWebView作为UIScrollView中的子视图.我已经在UIViewController中为UIWebView实现了触摸方法,但是没有调用这些方法.

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { }
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event { }
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event { }
Run Code Online (Sandbox Code Playgroud)

我在其他地方读过,它说UIScrollView会消耗这些事件.这是有道理的,但是如果UIWebView在UIScrollView本身之前没有收到触摸事件吗?可能发生的是,UIWebBrowserView(UIWebView的子视图)正在消耗这些事件.但是,这个类不能被子类化,因此我无法将超级视图链中的事件发送到UIScrollView.我已阅读上一个不应该永远把一个UIScrollView内一个UIWebView的苹果iOS文档,但我需要为我的目的这样做.

所以我的问题是:我的自定义UIWebView(即UIScrollView的子视图)如何接收触摸事件?

我的控制器和视图设置如下:

HomeViewController.h /.m /.xib
HomeView.h /.m (is a UIScrollView)
DashboardViewController.h /.m /.xib (custom UIWebView's)
Run Code Online (Sandbox Code Playgroud)

HomeViewController是从包含自定义视图的Nib文件加载的:HomeView.DashboardViewController从Nib文件加载.它包含一些标签,滑块等(请注意,这里没有自定义视图 - 我不是在这里继承UIView).

HomeViewController动态加载几个DashboardViewControllers并将其视图添加到HomeView.

DashboardViewController *dashboardViewController = [[DashboardViewController alloc] initWithNibName:@"DashboardViewController" bundle:[NSBundle mainBundle];
[homeView addSubview:dashboardViewController.view];
Run Code Online (Sandbox Code Playgroud)

Jul*_*les 0

用户交互是标准启用的。

您是否将视图委托连接到文件所有者?您是否将视图绑定到控制器?并确保将相应的操作连接到正确的方法。(CTRL 单击视图并将加号拖到 Class.h 文件中的相应方法上。

@interface MyScrollView : UIViewController {
    UIView *myFirstView;
    UIView *mySecondView;
    UIView *myThirdView;
}

@property (nonatomic, retain) IBOutlet UIView *myView;

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event;
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event;
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event;

@end
Run Code Online (Sandbox Code Playgroud)