2010-06-13 14 views
5

मेरे पास एक UITableViewController है जिसे मैंने UISearchBarDelegate के रूप में निर्दिष्ट किया है। अब तक, मैंने प्रोग्रामिंग के रूप में शीर्षलेख में UISearchBar जोड़ा था तालिका के दृश्य, और कोई समस्या नहीं थी।UISearchBar प्रतिनिधि को UINavigationBar titleVIew के रूप में उपयोग किए जाने पर नहीं कहा जाता है?

मैं स्क्रीन अचल संपत्ति से बाहर चलाने के लिए शुरू किया, तो मैं मेरे सामान्य UINavigationController शीर्षक (जो पाठ था) को मारने का फैसला किया और निम्नलिखित कोड जोड़ा, UINavigationBar में तालिका से मेरी SearchBar चलती:

// (Called in viewDidLoad) 
// Programmatically make UISearchBar 
UISearchBar *tmpSearchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(0,0,320,45)]; 
tmpSearchBar.delegate = self; 
tmpSearchBar.showsCancelButton = YES; 
tmpSearchBar.autocorrectionType = UITextAutocorrectionTypeNo; 
tmpSearchBar.autocapitalizationType = UITextAutocapitalizationTypeNone; 
[self set_searchBar:tmpSearchBar]; 
[tmpSearchBar release]; 
self.navigationItem.titleView = [self _searchBar]; 

यह कोड अपेक्षित काम करता है - मेरा UINavigationBar अब UISearchBar है। लेकिन, मेरा प्रतिनिधि विधि:

/** Only show the cancel button when the keyboard is displayed */ 
- (void) searchBarDidBeginEditing:(UISearchBar*) lclSearchBar 
{ 
    lclSearchBar.showsCancelButton = YES; 
} 

... अब और नहीं बुलाया जा रहा है। मैंने तोड़ दिया है, और मैंने पुष्टि की है कि UISearchBar का प्रतिनिधि वास्तव में स्वयं, दृश्य नियंत्रक है। अजीब तरह, इस प्रतिनिधि पद्धति अभी भी ठीक कहा जाता है:

/** Run the search and resign the keyboard */ 
- (void) searchBarSearchButtonClicked:(UISearchBar *)lclSearchBar 
{ 
    _deepSearchRan = NO; 
    [self runSearchForString:[[self _searchBar] text] isSlowSearch:NO]; 
    [lclSearchBar resignFirstResponder]; 
} 
कोई भी विचार क्यों UINavigationBar मेरी प्रतिनिधि कॉल निगलने है

?? मैं क्या खो रहा हूँ?

उत्तर

7

मुझे लगता है कि आप गलत विधि हस्ताक्षर लिखते हैं। यह होना चाहिए: - searchBarTextDidBeginEditing: टेक्स्ट संपादन के लिए यहां सभी UISearchBarDelegate विधियां हैं।

– searchBar:textDidChange: 

– searchBar:shouldChangeTextInRange:replacementText: 

– searchBarShouldBeginEditing: 

– searchBarTextDidBeginEditing: 

– searchBarShouldEndEditing: 

– searchBarTextDidEndEditing: 

UISearchBarDelegate

+0

धन्यवाद, मैं आँखों के एक दूसरे सेट की जरूरत है कि देखने के लिए। UISearchBarDelegate प्रोटोकॉल को एक और बार जांचना चाहिए था! यह तय है। – makdad

+0

यह सामान्य है। एक्सकोड ऑटो पूर्ण और जांच का खराब समर्थन करता है। मैंने प्रतिनिधि और विरासत के साथ भी कुछ गलती की। मैं अक्सर देखने के बजाय WillAppear {} करता हूं WillAppear: (BOOL) एनिमेटेड – vodkhang

संबंधित मुद्दे