2016-09-06 3 views
3

검색 막대가 있고 취소 버튼이 있습니다. 검색 버튼을 누른 후에 결과가 표시되지만 취소 버튼이 비활성 상태이고 두 번 클릭하여 다시 작동하게하려면 초기 결과. 검색 결과가 표시된 후에 취소 버튼을 활성화하는 방법은 무엇입니까?검색 버튼을 누른 후 검색 막대의 취소 버튼을 활성화합니다.

여기 그런 다음 버튼이 있는지 확인하기 위해 그 후이를 추가하려고 해제 취소 searchBar.endEditing(true)을 할 경우 이미 내 경험에 내 viewDidLoad에

+0

당신은 내가'에서 (참) searchBar.endEditing'후 함수를 호출 메인 스레드 –

답변

3

UISearchBarDelegatesearchBar.delegate = self를 구현하는 내 코드

func searchBarSearchButtonClicked(searchBar: UISearchBar) { 
    searchBar.endEditing(true) 
    searchBar.setShowsCancelButton(true, animated: true) 
    filterContentForSearchText(searchBar.text!, scope: "All") 
    print(searchBar.text) 
} 
func searchBarCancelButtonClicked(searchBar: UISearchBar) { 
    searchBar.text = "" 
    searchBar.resignFirstResponder() 
    searchBar.setShowsCancelButton(false, animated: true) 
    database = dataUtuh 
    self.collectionView.reloadData() 
} 

의의 일, 내 프로젝트에서도 사용 :

func enableCancelButton (searchBar : UISearchBar) { 
    for view1 in searchBar.subviews { 
     for view2 in view1.subviews { 
      if view2.isKindOfClass(UIButton) { 
       let button = view2 as! UIButton 
       button.enabled = true 
       button.userInteractionEnabled = true 
      } 
     } 
    } 
} 
+0

으로 시도 할 수 있습니다 될 수있다' searchBarSearchButtonClicked' 그리고 여전히 작동하지 않습니다 –

+1

'searchBarSearchButtonClicked'의 마지막 줄에 넣고 다시 확인하십시오. 왜'setShowsCancelButton '을 그렇게 많이 불렀는지 확실하지 않습니다. – Tj3n

+0

고마워요! 그것은 완벽하게 작동합니다. 나는 당신의 도움 없이는 할 수 없을 것입니다. –

5

코드를 ena 검색 표시 줄의 취소 버튼 표시 searchBarSearchButtonClicked 대리자 방법 검색 막대가 클릭 된 후 이러한 방식으로 취소 버튼이 계속 활성화됩니다.

그래서 전체 코드는 것

func searchBarSearchButtonClicked(searchBar: UISearchBar) { 
    searchBar.endEditing(true) 
    searchBar.setShowsCancelButton(true, animated: true) 
    print(searchBar.text) 


    for view in searchBar.subviews { 
     for subview in view.subviews { 
      if let button = subview as? UIButton { 
       button.enabled = true 
      } 
     } 
    } 

} 

해피 코딩 ...

관련 문제