私はBNRのiOSプログラミングの書籍の第7章で作業しています。章の始めに、前の章のモーションイベントに応答したUIView(HypnosisView)を持つUIViewController(HypnosisViewController)をセットアップしました。親UIViewControllerがRootViewControllerとして設定されていると、UIViewが最初のレスポンダにならない
私はAppDelegate.mファイル内のUIViewControllerを作成します。HypnosisViewControllerで
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
...
HypnosisViewController *hvc = [[HypnosisViewController alloc] init];
[[self window] setRootViewController:hvc];
...
}
、私はファーストレスポンダになるためにHypnosisViewを設定します。
- (void)loadView
{
// Create a view
CGRect frame = [[UIScreen mainScreen] bounds];
HypnosisView *view = [[HypnosisView alloc] initWithFrame:frame];
[self setView:view];
[view becomeFirstResponder];
}
そしてHypnosisViewに私がYESを返すようにしてください〜にcanBecomeFirstResponder。残念ながら、HypnosisViewは以前のような動きイベントには反応しませんでした。私が最終的に移動したとき、私は興味深い発見をしました。 HypnosisViewControllerをUITabBarControllerに移動すると、HypnosisViewはモーションイベントに応答します。
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];
なぜHypnosisViewControllerがRootViewControllerとした最初の応答者になるHypnosisViewませんでしたコードは次のようになりますか?なぜHypnosisViewControllerが別のコントローラの中に配置されたのですか?私はRootViewControllerについて何が分かりませんか?
ありがとうございます!