2011-09-20 17 views
7

मैं अपने ऐप के नेविगेशनबार में एक UISearchBar विकल्प बना रहा हूं। मेरे ऐप में कई दृश्य और सबव्यू शामिल हैं। मेरे पास यह मुख्यदृश्य है जिसमें स्वयं पर 3 अन्य विचार हैं। इसमें से एक खाली है (अभी के लिए) दूसरे 2 में टेबलव्यू हैं।uisearchbar पर ध्यान केंद्रित करते समय कीबोर्ड इस्तीफा

मैं चाहता हूं कि जब मैं वास्तविक खोज कर रहा हूं या जब मैं uisearchbar के बाहर स्पर्श/क्लिक करता हूं तो मैं अपना कीबोर्ड दिखाना चाहता हूं। मैं सर्चबार्डलेगेट का उपयोग कर आवश्यक है।

मैं निम्नलिखित तरीकों से [searchBar resignFirstResponder] का उपयोग करके कीबोर्ड को छुपाने में सक्षम हूं।

  • जब मैं रिटर्न कुंजी दबा रहा हूं।
  • जब मैं मैन्युअल रूप से खोज रद्द करता हूं
  • जब मैं खोज या रद्द करने के लिए कीबोर्ड बटन दबाता हूं।
  • जब मैं स्क्रीन के एक खाली हिस्से

    - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
    {  
        UITouch *touch = [[event allTouches] anyObject]; 
        if ([mySearchBar isFirstResponder] && [touch view] != mySearchBar) { 
         [mySearchBar resignFirstResponder]; 
        } 
        [super touchesBegan:touches withEvent:event]; 
    } 
    

का उपयोग कर मैं क्या करने में सक्षम हो ऐसा नहीं लगता कि यह मेरे 2 tableviews से एक को स्पर्श करने के लिए जवाब कर रहा है स्पर्श करें। या जब मैं मुख्य रूप से कुछ अलग करने के लिए मुख्यदृश्य को भर रहा हूं।

Ive ने tableviews को स्पर्श करते समय खोज पट्टी को इस्तीफा देने के लिए touchesbegan विधि को बदलने का प्रयास किया लेकिन यह अब तक काम नहीं कर रहा है।

मैंने अपने प्रिय मित्र श्रीमान द्वारा कई अन्य चीजों की कोशिश की है। गूगल, लेकिन यह सब कुछ और मुझे लगता है तो मुझे लगता है।

किसी के पास इस समस्या को हल करने के लिए मैं क्या कर सकता हूं इसके बारे में कोई विचार है?

संपादित करें: ऐसा लगता है कि, ब्रेकपॉइंट्स का उपयोग करते समय, touchesbegan-method पृष्ठभूमिदृश्य का जवाब देता है लेकिन जब मैं तालिकादृश्य या नेविगेशनबार (uisearchbar युक्त) को स्पर्श करता हूं तो यह प्रतिक्रिया नहीं देता है।

उत्तर

13

इसे हल किया गया!

- (BOOL) searchBarShouldBeginEditing:(UISearchBar *)searchBar 
{ 
    [self.myViewController1.customView1 setUserInteractionEnabled:NO]; 
    [self.myViewController2.customView2 setUserInteractionEnabled:NO]; 
    [searchBar setShowsCancelButton:YES animated:[mySettings animation]]; 
    return YES; 
} 

मैंने खोज 2 का उपयोग शुरू करने के समय, मेरे 2 सबव्यूज़ पर उपयोगकर्ता इंटरैक्शन को बंद करके शुरू किया।

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
{  
    UITouch *touch = [[event allTouches] anyObject]; 
    if ([self.mySearchBar isFirstResponder] && [touch view] != self.mySearchBar) 
    { 
     [self.mySearchBar resignFirstResponder]; 
     [self.myViewController1.customView1 setUserInteractionEnabled:YES]; 
     [self.myViewController2.customView2 setUserInteractionEnabled:YES]; 
    } 
    [super touchesBegan:touches withEvent:event]; 
} 

फिर जब मैं क्लिक करें/नल/Searchbar बाहर स्पर्श मैं पहली बार कुंजीपटल जो पहले प्रत्युत्तर अब भी है इस्तीफा देने और उसके बाद मैं 2 subviews के लिए पीठ पर userInteraction निर्धारित किया है। ऐसा करने का आदेश महत्वपूर्ण है!

कोड का यह टुकड़ा आपको एक मुख्य मेन्यू कंट्रोलर में कीबोर्ड को इस्तीफा देने की अनुमति देता है, भले ही यह सबव्यूज़ के बड़े पैमाने पर भीड़ में हो।

0

आप इस की कोशिश की

UISearchBar *searchBar; 

अगला सेट UISearchBar के मनुष्य और सेटर संपत्ति है,।

और किसी भी विधि कॉल

[searchBar resignFirstResponder]; 
संबंधित मुद्दे