2010-08-06 9 views
11

मैं एक संलग्न UISearchBar के साथ एक बहुत ही बुनियादी UITableView है, और यहाँ क्या होता हैUISearchBar और resignFirstResponder

UITableView रिक्त है के प्रवाह है, उपयोगकर्ता टैप करता UISearchBar, और कीबोर्ड को लाता है। उपयोगकर्ता एक बार खोज बटन टैप करता

- (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar { 
    [searchBar resignFirstResponder]; //move the keyboard out of the way 
    //Code.... 
} 

ठीक काम करता है, और जिस तरह से बाहर कुंजीपटल चलता है, और UITableView भरता है। समस्या किसी भी बाद के खोज प्रयास है।

पहले जैसा ही कदम होता है, हालांकि कीबोर्ड कभी बर्खास्त नहीं होता है। मुझे लगता है कि कुछ और प्रतिक्रियाकर्ता बन रहा है, मुझे वास्तव में क्या हो रहा है यह समझने के लिए थोड़ा स्पष्टता की आवश्यकता है।

उत्तर

29

अपना कोड देखे बिना अनुमान लगाना मुश्किल है। हालांकि, यदि आप शामिल हैं:

[self.view endEditing:YES]; 

सभी विचार पहले उत्तरदाता से इस्तीफा दे देंगे।

+0

यह मेरे लिए एकदम सही काम करता है बिना काम नहीं करेगा! – Raptor

+0

मेरे पास UICextlectionView कक्षों के साथ समान समस्याएं हैं जिनमें UITextFields शामिल हैं और यह मेरे लिए हल हो गया है, धन्यवाद! – thomh

+0

'func search में काम नहीं करें बारकैंकल बटन पर क्लिक किया गया (सर्चबार: यूआईएसआईआरबीबार) 'प्रोटोकॉल – jose920405

2

सही नहीं है लेकिन मेरे मामले के लिए काम किया है। dispatch_after

- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText { 
    if (!searchText.length) { 
     dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.3 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ 
      [searchBar resignFirstResponder]; 
     }); 
    } 
} 

- (void)searchBarTextDidEndEditing:(UISearchBar *)searchBar { 
    [self performSearchWithString:searchBar.text]; 
    [searchBar resignFirstResponder]; 
}