21

मेरे पास एक आसान UIViewController और UISearchBar है, जब दृश्य लोड मैं चाहता हूं कि खोज बार तुरंत पहले उत्तरदाता बन जाए, ताकि कीबोर्ड दिखा रहा हो और वे अपनी क्वेरी टाइप करना शुरू कर सकें दूर। मैं किसी भी भाग्य के बिना viewWillAppear नीचे की तरह में यह कर की कोशिश की:लोड देखें

- (void)viewWillAppear:(BOOL)animated 
{ 
    [productSearchBar becomeFirstResponder]; 
    [super viewWillAppear:animated]; 
} 

वहाँ एक और जगह है कि मैं UISearchBar पर becomeFirstResponder बुला जाना चाहिए या मैं और पूरी तरह से कुछ बुला किया जाना चाहिए है?

उत्तर

34

इसे -viewDidAppear पर ले जाएं और यह ठीक होना चाहिए। -becomeFirstResponder कीबोर्ड को खींचता है (जैसा कि आप नोट करते हैं), और आपको ऑनस्क्रीन होने से पहले एनिमेशन नहीं करना चाहिए। आप अजीब बातचीत कर सकते हैं।

यदि यह कुछ भी नहीं कर रहा है, तो लगभग निश्चित रूप से productSearchBar एक आईबीओटलेट है और आप इसे इंटरफ़ेस बिल्डर में UISearchBar पर वास्तव में जोड़ना भूल गए हैं। यूआई में "कुछ नहीं होता" के लिए यह # 1 कारण है।

ध्यान दें कि आपको इस तरह अपने इवर्स तक नहीं पहुंचना चाहिए; आपको इसे एक संपत्ति बनाना चाहिए और केवल self.productSearchBar देखें। अंततः ऐप्पल ने Memory Management of Nib Objects में इसका सही स्पष्टीकरण पोस्ट किया है। कभी भी अपने आईवर को एक्सेसर के बाहर या -dealloc तक न पहुंचें। यह नियम आपको कई घंटे डिबगिंग बचाएगा।

+0

धन्यवाद रोब, यह चाल है। मेमोरी मैनेजमेंट पर लिंक भी एक बड़ी मदद है, मैं इसे ठीक कर दूंगा। –

+0

पर जाएं-viewDidAppear काम करता है – malhal

+0

बहुत बहुत धन्यवाद ... मेरे लिए काम किया ... – KSR

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