出现以编程方式创建的窗口但不响应触摸事件

时间:2010-12-07 05:39:24

标签: iphone cocoa-touch

我正在创建没有MainWindow笔尖的应用程序,在更新到新SDK之后,我的应用程序完全崩溃了。在main.m的main()函数中我有:

int retVal = UIApplicationMain(argc, argv, nil, @"AppDelegate");

以下是应用程序的相关部分:didFinishLaunchingWithOptions:在AppDelegate.m中

window = [[UIWindow alloc] init];

tabBarController = [[UITabBarController alloc] init];

UINavigationController *nav = ...;
UITableViewController *table = ...;

tabBarController.viewControllers = [NSArray arrayWithObjects:nav, table, nil];

[window addSubview:tabBarController.view];
[window makeKeyAndVisible];

当应用程序启动时,标签栏可见,第一个标签中的视图也是如此。但是,所有触摸事件要么没有注册,要么没有传递给窗口本身。我将UIWindow子类化并将window设置为它的一个实例。在这个子类中,我重写了sendEvent:方法,以便在调用时记录到控制台。什么都没有出现。我做错了什么?

5 个答案:

答案 0 :(得分:4)

好吧,我明白了。希望这有助于某人。这些是我的应用程序中的第一行:didFinishLaunchingWithOptions:method:

window = [[UIWindow alloc] init];
window.screen = [UIScreen mainScreen]; // this fixes the problem

答案 1 :(得分:2)

您可以尝试将第四个参数从“nil”修改为main.c中的应用程序委托名称

例如 将UIApplicationMain(argc,argv,nil,nil)修改为 UIApplicationMain(argc,argv,nil,@“HelloWorldAppDelegate”)

答案 2 :(得分:0)

我有类似的问题,帮助我的是添加

[window setRootViewController:tabBarController];

...我只是添加了视图而不是整个视图控制器。

答案 3 :(得分:0)

我在删除mainwindow.xib并以编程方式创建窗口时遇到了类似的问题:我仍然有这条线:

[self.window addSubview:rootcontroller.view];

删除它解决了这个问题。

答案 4 :(得分:0)

对我来说,我不得不使用:

self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];

而不是:

self.window = [[UIWindow alloc] init];