1

tableview 검색에서 (편집시 나타나는) 버튼을 눌렀을 때 키보드가 사라 지려고했습니다. "clear"버튼을 클릭하면 firstResponder를 사퇴 할 수 있습니다. ...searchBar의 일반 텍스트 버튼에 액세스하는 방법?

if (SearchBar.text == @"") { 
    [SearchBar resignFirstResponder]; 
    NSLog(@"clear called"); 
} 

작동하지 않았다 또한 시도 : 난 이미 textDidChange 방법이 시도

if (SearchBar.text == nil) { 
    [SearchBar resignFirstResponder]; 
    NSLog(@"clear called"); 
} 

어느 방법은 호출 된 것으로 나타났다. 어떤 아이디어?

편집 : 이제 resignFirstResponder가 작동하지 않는 것 같습니다. 키보드가 화면에 그대로 있습니다. 내가 뭘 잘못하고 있니?

답변

2

문자열을 비교 한 내용은 유 사용해야

if([SearchBar.text isEqualToString: @""]) 
+0

통해 UR 코드에 있어야 - 검색 창 : textDidChange : – KingofBliss

+0

예, 해당 메서드에 있습니다. 고마워,이 속임수를했다. 이제 어떤 이유로'resignFirstResponder' 호출이 작동하지 않습니다. 오 잘. :) –

2
당신은 KVO 통지를 등록하여 검색 바의 text 속성을보고 시도 할 수 있습니다

:

[self.searchBar addObserver:self forKeyPath:@"text" options:NSKeyValueObservingOptionNew context:NULL]; 

다음 구현 :

- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context { 
    if (object == self.searchBar && [keyPath isEqualToString:@"text"]) { 
    // Handle the new value of self.searchBar.text 
    } 
} 

E DIT가 : 신경 끄시 고,

+0

글쎄, 그게 효과가 있지만 그것은 내 목적이 무엇을 위해 필요한 것보다 조금 더 복잡해. 그래도 도와 ​​줘서 고마워! –

2

내가이 질문은 오래 알고 있지만,이 작업을 수행하는 또 다른 방법입니다) = 위의 대답

if(searchText.length == 0)

- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText

+0

사실 이것은 아마도 이것을 처리하는 가장 깨끗한 방법 일 것입니다. 그러나 저는 그 때 그것을 몰랐습니다. 공유해 주셔서 감사합니다. –

관련 문제