2010-12-08 2 views
1

현재 등록보기가있는 iPhone 4 앱에서 작업 중입니다. 사용자는 UITextField에 집중할 수 있으며 키보드가 텍스트 필드를 은폐하지 못하도록보기를 위쪽으로 이동시키는 코드가 있습니다. 그러나 앱이 배경으로 설정되어 다시 포어 그라운드로 되돌아 오면 키보드는 여전히 켜져 있고 텍스트 필드는 여전히 초점 상태이지만보기가 원래 상태로 다시 이동합니다. 이것은 텍스트 필드를 덮고 있습니다.iPhone 앱이 포 그라운드로 다시 들어가면 뷰가 원래 위치로 돌아가고 키보드가 계속 표시됩니다.

무슨 일 이니? 앱을 포 그라운드로 다시 가져 가면 뷰를 유지하거나 숨길 수있는 방법은 무엇입니까?

업데이트 : 새로운 iOS5를에 이에 대한

된 경위, 변경?

답변

0

키보드는 현재이보기에서 사용하고 있는지 확인하기 위해

NSLog(@"%@", [self.viewController.YOURTEXTFIELD isFirstResponder]); 
if ([self.viewController.YOURTEXTFIELD isFirstResponder]) { 
    [self.viewController.YOURTEXTFIELD resignFirstResponder]; 
} 

같은 앱 위임에서 "isFirstResponder"검사를 applicationDidEnterBackground :와의 일을 시도하고 있는지 YES를 반환 할 수없고 그 경우 그렇지 않습니다.

NSLog는 if 문으로 전달되는 내용을 알고 있습니다.

0

나는 다음 해결했습니다 :

AppDelegate에에서를

- (void)applicationDidBecomeActive:(UIApplication *)application 
{ 

    // 1. get access to ViewController which is on top 
    // In my case, I have navigation controller in root 

    UIViewController* current_controller = [self.rootNavController.viewControllers lastObject]; 

    // 2. loop all uitextfield. 
    for (UITextField* o_txt in [current_controller.view subviews]) { 
     [o_txt resignFirstResponder]; 
    } 

} 

봐의 "핫 픽스"같은)

관련 문제