BNR의 iOS 프로그래밍 책 7 장에서 작업 중이며 문제가 있습니다. 이 장의 시작 부분에서는 이전 장에서 모션 이벤트에 응답 한 UIView (HypnosisView)를 사용하여 UIViewController (HypnosisViewController)를 설정했습니다.상위 UIViewController가 RootViewController로 설정된 경우 UIView가 첫 번째 응답자가되지 않습니다.
내가이 (가) AppDelegate.m 파일의 UIViewController 만들 :
- (void)loadView
{
// Create a view
CGRect frame = [[UIScreen mainScreen] bounds];
HypnosisView *view = [[HypnosisView alloc] initWithFrame:frame];
[self setView:view];
[view becomeFirstResponder];
}
그리고 HypnosisView에서
내가 YES 반환 할 수 있는지 확인하십시오 HypnosisViewController에서- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
...
HypnosisViewController *hvc = [[HypnosisViewController alloc] init];
[[self window] setRootViewController:hvc];
...
}
을, 나는 첫 번째로 반응이 될 HypnosisView 설정 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에 대해 무엇을 놓치고 있습니까?
감사합니다.