21

내가보기가로드 될 때 간단한 UIViewController과 을 가지고있는 경우 UISearchBar 첫 번째 응답자로 지정하십시오. 검색 막대를 바로 응답자로 지정하여 키보드가 표시되고 바로 쿼리를 시작할 수 있습니다. 떨어져. 나는 운이없이 아래와 같은 viewWillAppear에 그 일을 시도 :보기로드시

- (void)viewWillAppear:(BOOL)animated 
{ 
    [productSearchBar becomeFirstResponder]; 
    [super viewWillAppear:animated]; 
} 

나는 UISearchBarbecomeFirstResponder를 호출해야한다 또는 나는 완전히 다른 뭔가를 호출해야 다른 장소가 있습니까?

답변

34

-viewDidAppear으로 이동해야합니다. -becomeFirstResponder은 키보드를 위로 당기며 (주의 사항) 화면 상에 나타나기 전에 애니메이션을하면 안됩니다. 이상한 상호 작용을 할 수 있습니다.

아무 것도하지 않는다면, 거의 확실하게 productSearchBar은 IBOutlet이며 실제로 인터페이스 빌더의 UISearchBar에 연결하는 것을 잊어 버렸습니다. 이것은 UI에서 "아무 일도 일어나지 않는"이유 중 # 1입니다.

이렇게하면 ivars에 액세스해서는 안됩니다. 당신은 재산으로 만들고 self.productSearchBar만을 참조해야합니다. 애플은 드디어 Memory Management of Nib Objects에 올바른 설명을 올렸다. 접근 자 또는 -dealloc 외부의 귀걸이는 절대로 사용하지 마십시오. 이 규칙은 많은 시간의 디버깅을 저장합니다.

+0

감사합니다. Rob, 그 트릭을했습니다. 메모리 관리에 대한 링크는 큰 도움이 될 것입니다. –

+0

-viewDidAppear로 이동 – malhal

+0

고맙습니다 ... 나를 위해 일했습니다 ... – KSR