2010-12-07 3 views
4

Я создаю свое приложение без MainWindow nib, и после обновления к новому SDK мое приложение полностью сломалось. В основной функции() из main.m у меня есть:Программируемое окно появляется, но не реагирует на события касания

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

Например Modify 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];