ich auf Kapitel 7 arbeiten von iOS-Programmierung Buch BNR und ich habe auf ein Problem stoßen. Zu Beginn des Kapitels habe ich einen UIViewController (HypnosisViewController) mit einem UIView (HypnosisView) eingerichtet, der auf Bewegungsereignisse im vorherigen Kapitel reagiert hat.UIView hat sich nicht First Responder, wenn Eltern UIViewController als RootViewController gesetzt
ich die UIViewController in der AppDelegate.m-Datei zu erstellen:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
...
HypnosisViewController *hvc = [[HypnosisViewController alloc] init];
[[self window] setRootViewController:hvc];
...
}
Im HypnosisViewController, habe ich HypnosisView Ersthelfer werden:
- (void)loadView
{
// Create a view
CGRect frame = [[UIScreen mainScreen] bounds];
HypnosisView *view = [[HypnosisView alloc] initWithFrame:frame];
[self setView:view];
[view becomeFirstResponder];
}
Und in HypnosisView ich sicherstellen, dass JA zurück zu canBecomeFirstResponder. Leider reagierte die HypnosisView nicht wie zuvor auf Bewegungsereignisse. Als ich schließlich weiterzog, machte ich eine interessante Entdeckung. Wenn ich HypnosisViewController in einen UITabBarController verschiebe, reagiert HypnosisView auf Bewegungsereignisse. Der Code sieht etwa so aus:
HypnosisViewController *hvc = [[HypnosisViewController alloc] init];
UITabBarController *tabBarController = [[UITabBarController alloc] init];
NSArray *viewControllers = [NSArray arrayWithObjects:hvc, <insert more objs here>, nil];
[tabBarController setViewControllers:viewControllers];
[[self window] setRootViewController:tabBarController];
Warum nicht HypnosisView Ersthelfer, wenn HypnosisViewController als RootViewController gesetzt wurde? Warum begann es zu funktionieren, sobald HypnosisViewController in einem anderen Controller installiert wurde? Was fehlt mir an RootViewController?
Danke!