0

이 문제의 테스트 케이스로 간단한 프로젝트를 만들었습니다.UINavigationController에 포함 된 경우 becomeFirstResponder 및 텍스트 설정 중 UITextField에 텍스트가 누락되었습니다.

UINavigationController 내부에 하나의 UITextField 만있는 간단한보기가 있습니다.

View embedded inside navigation controller

나는 호출하는 경우 : viewDidLoad에 내부

self.textField.text = @"TEST"; 
[self.textField becomeFirstResponder]; 

. 텍스트 필드가 나타나지만 텍스트가 왜곡되거나 보이지 않거나 정렬되지 않습니다.

viewDidAppear에서 텍스트를 설정하거나 becomeFirstResponder를 호출하는 경우이 문제는 발생하지 않지만 키보드 애니메이션이 지연되어 원하는 결과를 얻지 못해 새로운보기가 표시되는 동안 키보드와 텍스트가 표시되어야합니다.

테스트 케이스 : 그것은 뷰 계층 구조의 일부인 경우 Test Project

+0

viewDidLoad 콘센트가 제대로 설정되지 않았습니다. viewWillAppear에서 호출 해보십시오. –

답변

0

enter image description here

당신은 해당 뷰를 호출 할 수 있습니다. 뷰의 window 속성에 UIWindow 객체가있는 경우. 이렇게 해보십시오.

-(void)viewWillAppear:(BOOL)animated 
{ 

    self.textField.text = @"TEST"; 
    [super viewWillAppear:animated]; 
    dispatch_async(dispatch_get_main_queue(), ^{ 
     [self.textField becomeFirstResponder]; 
    }); 
} 
+0

viewWillAppear이 주 스레드에서 호출되었으므로 dispatch_async를 다시 호출 할 필요가 없습니다. –

+0

Teja 님의 의견에 동의합니다. dispatch_async가 필요하지 않습니다. 제 예제 프로젝트를 확인하십시오. 그러면 문제가 해결되지 않습니다. – Mirko

관련 문제