2017-11-14 8 views
0

데이터 필터링을 돕기 위해 간단한 텍스트 입력이 필요합니다. 이상적으로는 UISearchBar에 대한 강한 참조를 유지, 그리고 사용자가 탭하면 "검색", 다음이 검색 창 것 becomeFirstResponder() 나는UISearchBar를 고유 한 .inputAccessoryView로 만들 수 있습니까?

self.searchBar.inputAccessoryView = self.searchBar

을 설정합니다 그러나 그것은하지 않는 것 것 작업. .searchBar는 일반적으로 뷰 컨트롤러의 뷰 계층 구조에 없으며 키보드에 연결하기 만하면됩니다.

그렇지 않으면 다른 접근 방식을 생각해 볼 것입니다. 궁극적으로 나는 편집하는 동안 볼 수있는 텍스트 입력을하려고하는데, 그것은 툴바에 첨부되어야합니다. .inputAccessoryView를 사용하면 이상적으로 키보드 알림/애니메이션을 신경 쓰지 않아도됩니다.

이것이 가능한지 알고 있습니까?

답변

0

정확하게 이해하면 키보드를 트리거하고 사용자가 입력 한 검색어를 표시하기 위해 검색 창을 사용하지만 검색 창을 항상 화면에 표시하고 싶지는 않지만 검색 창이 활성화되도록하고 싶습니다 "검색"버튼을 클릭하십시오.

하나의 UISearchBar 불가능하지만 당신은 단지 그 두 가지를 사용할 수 있습니다

:

  • 보기 컨트롤러에 하위 뷰로서 하나를 추가하고 (BAR1)를 숨기고, inputAccessoryView로 두 번째를 사용 (바 2); 두 검색 바의 델리게이트가되어야합니다.
  • 사용자가 "검색"버튼을 누르면 bar1이 첫 번째 응답자가되고 대리자 프로토콜을 통해 이벤트가 처리되고 그에 따라 bar2가 업데이트됩니다.
  • 사용자가 shouldChangeTextIn 대리자 메서드를 사용하여 을 차단하여 bar2에 텍스트를 직접 입력 할 수 없도록합니다.이 bar2에서 수신 된 다른 이벤트는이 상황에서 bar1로 전달 될 수 있습니다.

    self.dummySearchBar = UISearchBar() 
    dummySearchBar.isHidden = true 
    dummySearchBar.delegate = self 
    
    self.visibleSearchBar = UISearchBar() 
    visibleSearchBar.delegate = self 
    dummySearchBar.inputAccessoryView = visibleSearchBar 
    

    그런 다음 "검색"단추 처리기에 첨부와 키보드를하자 :

여기에 (예를 들어 viewDidLoad에 갈 것) 기본 설정에 대한 몇 가지 코드, 당신은 시작하려면 검색 창은 다음과 같이 나타납니다

dummySearchBar.becomeFirstResponder() 

참고 : 나는이 프로젝트에 비슷한 설정을 가지고 있지만 간단하게하기 위해 내가 대신 UISearchBar의의 UITextField S를 사용한다; 여전히 기본 접근법은 UISearchBar과 함께 작동해야한다고 생각합니다.

+0

고마워요. 나만의 솔루션을 만들 수는 있지만 물론, 아무리 긴 사용자 (텍스트 편집?)를 사용할 수 있다고 생각지 않는다. 어쨌든, 나는 지금 다른 접근법을 취하고있다. 내가 뭘 의심했는지 확인해 주셔서 감사합니다. – horseshoe7