2010-12-07 70 views
4

我创建的应用程序没有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:方法以便在调用时登录到控制台。什么都没有显示出来。我究竟做错了什么?

回答

4

嗯,我想通了。希望这可以帮助某人。这些都是在我的应用程序的第一个两行中:didFinishLaunchingWithOptions:方法:

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

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

例如 修改UIApplicationMain(ARGC,ARGV,零,零)到 UIApplicationMain(ARGC,ARGV,零,@ “HelloWorldAppDelegate”)

0

我有一个类似的问题,是什么让我在加入

[window setRootViewController:tabBarController]; 

...我只是添加了视图,而不是整个视图控制器。我仍然有这样的线:

0

我除去的MainWindow.xib和编程方式创建窗口时也有类似的问题

[self.window addSubview:rootcontroller.view];

删除它解决了这个问题。

0

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

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

不是:

self.window = [[UIWindow alloc] init]; 
相关问题