2010-08-25 16 views
9

पर क्लिक करते हैं, तो मुझे कौन सा ईवेंट बुलाया जाता है, मेरे आवेदन में, मुझे कुछ गतिविधि करने की आवश्यकता है iee अन्यदृश्य नियंत्रक को दबाकर, जब मैं एक यूआईएसएचकबार पर क्लिक करता हूं जो दृश्य में जोड़ा जाता है।जब हम UISearchBar

इसे प्राप्त करने के लिए सबसे अच्छा तरीका क्या है।

बात से एक के रूप में जब हम UISearchbar क्लिक करें "searchBarTextDidBeginEditing" निकाल दिया, लेकिन मेरी परिदृश्य के साथ जब मैं "searchBarTextDidBeginEditing" में दृश्य नियंत्रक धक्का और वापस आने searchBarTextDidBeginEditing फिर से बुलाया जाते हैं, अत लगता है यह देखने के लिए पुश करने के लिए आदर्श जगह है नहीं है नियंत्रक।

यह maincontroller है

// Search bar 
    iSearchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(0, 0, frame.size.width, 40)]; 
    iSearchBar.delegate = self; 
    iSearchBar.showsCancelButton = NO; 
    iSearchBar.autocorrectionType = UITextAutocorrectionTypeNo; 
    iSearchBar.autoresizingMask = UIViewAutoresizingFlexibleWidth; 
    [self addSubview:iSearchBar]; 

जब मैं UISearchBar क्लिक करें तो यह

- (void)searchBarTextDidBeginEditing:(UISearchBar*)searchBar 
    { 
    [self ShowMySearch]; 
    } 

ShowMySearch में कहता है, मैं जोर दे रहा हूँ कुछ अन्य नियंत्रक searchcontroller कहना देता है और जब पॉप इस searchcontroller और वापस maincontroller के लिए आते हैं "searchBarTextDidBeginEditing" कॉल फिर से प्राप्त करें और searchcontroller को फिर से धक्का दिया जाता है और समस्या उत्पन्न होती है। इस व्यवहार, केवल पर 3.1.1

धन्यवाद देखा जाता है

सागर

+0

अधिक जानकारी उपयोगी होगी –

+0

अधिक जानकारी जोड़ा गया। –

उत्तर

15

मैं "searchBarTextDidBeginEditing" में [आत्म ShowMySearch] बुला लगता है कि थोड़ा बहुत देर हो चुकी है। मुझे लगता है कि खोज बार के पहले उत्तरदाता बनने के जवाब में "searchBarTextDidBeginEditing" को कॉल किया जाता है। चूंकि खोज नियंत्रक को धक्का दिया जाता है, यह पहला प्रतिसादकर्ता है, इसलिए जब आपका खोज नियंत्रक पॉप आउट हो जाता है तो यह संभवतः पहले प्रतिक्रियाकर्ता बन जाता है ... इस प्रकार एक बार फिर से "searchBarTextDidBeginEditing" को कॉल किया जाता है।

इस लक्ष्य को हासिल करने के लिए, मैं का उपयोग करेंगे:

  • (BOOL) searchBarShouldBeginEditing: (UISearchBar *) Searchbar

इस विधि के बाद खोज पट्टी का उपयोग किया जाता है कहा जाता है, लेकिन इससे पहले कि यह हो जाता है पहला प्रतिसादकर्ता। और अगर आप नहीं लौटने के लिए, यह कभी नहीं पहले प्रत्युत्तर बन जाएगा:

- (BOOL)searchBarShouldBeginEditing:(UISearchBar*)searchBar { 
    [self ShowMySearch]; 
    return NO; 
} 

मुझे पता है कि अगर यह काम करता है!

+0

धन्यवाद एरिक। यह पूरी तरह से काम करता है। –

+0

धन्यवाद एरिक मोरांड। इससे मेरा काम बनता है – jpd