2010-07-18 13 views
8

मेरे पास UIViewControllers के तीन स्तरों के साथ नेविगेशन ऐप ड्रिल डाउन है। प्रत्येक दृश्य नियंत्रक में, मेरे पास एक UITextField है जहां मैं प्रत्येक के लिए UIKeyboard subclass करने की कोशिश कर रहा हूं। मेरा सवाल यह है कि अधिसूचनाएं "सेट" करें और उन्हें "अनसेट" करें।UIKeyboard अधिसूचनाओं के लिए सर्वश्रेष्ठ अभ्यास - आईफोन एसडीके

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:nil]; 
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillHide:) name:UIKeyboardWillHideNotification object:nil]; 

तो यह उन्हें viewDidLoad स्थिति में स्थापित करने के लिए सबसे अच्छा यह:

मैं नोटिफिकेशन नहीं हैं? या ViewWillAppear घटना? के रूप में मैं अंदर घुसते हैं

और वैसे ही [[NSNotificationCenter defaultCenter] removeObserver:self];

मैं कई keyboardWillShow: घटना नहीं करना चाहती के लिए कहा जाता है।

बहुत धन्यवाद, ब्रेट

उत्तर

7

मैं तुम्हें, init और dealloc तरीकों में इन डाल के रूप viewWillAppear और viewWillDisappearहर बार दृश्य दिखाई देता है या गायब हो जाता है, जो पंजीकरण के लिए अनावश्यक है बुलाया जाएगा सुझाव है/deregistering सूचनाएं।

+0

viewDidUnload: आईओएस 6.0 में बहिष्कृत। दृश्य अब कम स्मृति स्थितियों के तहत शुद्ध नहीं हैं और इसलिए इस विधि को कभी नहीं कहा जाता है। – Vamos

+0

init में पंजीकरण, dealloc – jjxtra

+0

में पंजीकरण रद्द करें जब आप प्राप्त करना चाहते हैं – drct

5

मैं फिर भी आप viewWillAppear में पर्यवेक्षक के रूप में रजिस्टर और viewWillDisappearviewDidUnload के बाद से में अपंजीकृत का सुझाव देते हैं कहा जाता है चाहता हूँ केवल जब स्मृति मुक्त किया गया है, जिसका अर्थ है viewDidLoad अधिक बार viewDidUnload से कहा जाता हो और फिर आप प्राप्त करने की समस्या हो सकती है एक ही अधिसूचना एक से अधिक बार।

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