2010-12-07 6 views
4

Je crée mon application sans la plume de MainWindow, et après la mise à jour vers le nouveau SDK, mon application est complètement cassée. Dans la fonction principale() de main.m je:La fenêtre créée par programme apparaît mais ne répond pas aux événements tactiles

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

est ici les bits pertinents d'application: 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]; 

Lorsque l'application lance, la barre d'onglets est visible et ainsi est la vue dans le premier onglet. Cependant, tous les événements tactiles ne sont pas enregistrés ou ne sont pas transmis à la fenêtre elle-même. J'ai sous-classé UIWindow et ai défini window comme une instance de celui-ci. Dans cette sous-classe, j'ai remplacé la méthode sendEvent: pour se connecter à la console à chaque appel. Rien ne se montre. Qu'est-ce que je fais mal?

Répondre

4

Eh bien, je l'ai compris. J'espère que cela aide quelqu'un. Ce sont les premières lignes de couple dans ma demande: didFinishLaunchingWithOptions: méthode:

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

Vous pouvez essayer de modifier le quatrième paramètre de « nul » au nom du délégué de l'application dans main.c

Par exemple Modifier UIApplicationMain (argc, argv, nul, nul) à UIApplicationMain (argc, argv, nul, @ "HelloWorldAppDelegate")

0

J'ai eu un problème similaire et ce qui m'a aidé ajoutais

[window setRootViewController:tabBarController]; 

... J'avais seulement ajouté la vue au lieu du contrôleur de vue entier.

0

J'ai eu un problème similaire lors du retrait du MainWindow.xib et la création de la fenêtre programme: j'avais encore cette ligne:

[self.window addSubview: rootcontroller.view];

La suppression a résolu le problème.

0

Pour moi, je devais utiliser:

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

Plutôt que:

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