嘿伙计们我有一个UIViewController,RootUIViewController引用另一个UIViewcontroller,MainMenuViewController。
我将MainMenuViewController的视图作为子视图添加到RootUIViewController的视图中。问题是触摸事件没有被MainMenuViewController touchesBegan方法捕获。
相关代码如下。触摸屏幕时的输出显示“触摸根视图控制器”。我想要的结果是要在MainMenuViewController中捕获的触摸事件并显示“触及根视图控制器”。我在这里错过了什么/做错了什么?
RootUIViewController.m
- (void)viewDidLoad {
[super viewDidLoad];
MainMenuViewController* mainMenuViewController = [[MainMenuViewController alloc] initWithNibName:@"MainMenuView" bundle:nil];
m_mainMenuViewController = mainMenuViewController;
[self.view addSubview:m_mainMenuViewController.view];
[mainMenuViewController release];
}
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
NSLog(@"touched at root view controller");
}
MainMenuViewController.m
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
NSLog(@"touched at main view controller");
}
答案 0 :(得分:2)
很高兴你能够解决你的内存管理问题。我想添加一个警告
[self.view addSubview:m_mainMenuViewController.view];
是有问题的,在我看来,这是一个坏主意。 UIViewController视图的子视图不应由他们自己的UIViewController管理。这些子视图可以有控制器,但它们不应该是UIViewController子类,因为它们永远不会像UIViewController那样可靠的行为,这可能会让你以后感到头疼。最好接受我们从Apple获得的类和API的限制,并设计一个支持的,可靠的解决方案。
我试图在此详细介绍这一点:Abusing UIViewControllers,希望这会有所帮助。