2011-11-10 21 views
9

कहा जाता है मैं इस तरह के रूप keyboardWillShow और keyboardWillHidekeyboardWillShow दो बार

सभी कोड अधिसूचना का उपयोग मैं एप्पल के नमूना कोड "KeyboardAccessory"

जब मैं पहली बार इस दृश्य में प्रवेश, सब कुछ से लिया जाता है के साथ संभालती कुंजीपटल सूचनाओं के साथ एक दृश्य ठीक काम करता है।

लेकिन जब मैं अपने subviews से इस दृश्य पर लौटने, हर बार जब मैं एक बटन है कि कहते हैं नल:

[myTextField becomeFirstResponder]; 

keyboardWillShow और keyboardWillHide तरीकों दो बार हर बार बुलाया जाएगा।

यह वास्तव में भ्रामक है,

सकता है किसी को भी मुझे इस के साथ मदद करता है?

वास्तव में सराहना करते हैं!

उत्तर

11

आप अपना कोड पोस्ट करना चाहते हैं।

यदि आपकी विधियों को दो बार बुलाया जा रहा है, तो संभवतः, आप कीबोर्ड नोटिफिकेशन के लिए कई बार पंजीकरण कर रहे हैं और जब आप सोचते हैं तो पर्यवेक्षक को हटा नहीं रहे हैं।

अपने पर्यवेक्षक को दृश्य में जोड़ें: और इसे देखने में हटाएं WillDisappear: और देखें कि क्या होता है।

+0

धन्यवाद! अचानक मुझे पता चला कि समस्या कहां है! –

+0

लेकिन हमें आपकी समस्या का समाधान बताए जाने के बारे में क्या? आपके व्यू कंट्रोलर –

+0

से पर्यवेक्षक को हटाने की तुलना में कुछ और लगता है, मेरे मामले में, मैंने वास्तव में पर्यवेक्षक को दो बार जोड़ा था। धन्यवाद ~ – James

6

इसे आईओएस 8 पर दो बार कहा जाता है जब एक कस्टम कीबोर्ड, जैसे स्विफ्टकी दिखाया जा रहा है।

पहली कॉल पर, यह शायद दिखने के लिए तैयार है, इसलिए CGSize keyboardSize = [[[notification userInfo] objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].size; की कीबार्ड ऊंचाई होगी।

दूसरी कॉल में सही कीबोर्ड ऊंचाई होगी, इसलिए यदि आपको सामग्री इन्सेट को समायोजित करने की आवश्यकता है, तो आप जांच सकते हैं कि आपके इन्सेट की गणना करने से पहले कीबोर्ड की ऊंचाई वापस आ गई है।

इसके अलावा, जब भी उपयोगकर्ता कीबोर्ड बदलता है तो इसे कॉल किया जाएगा।

+3

मुझे यह वही अधिसूचना (ऑब्जेक्ट पता बराबर है) के साथ मिल रहा है और ऊंचाई बराबर है ... :-(इसके अलावा, मैं केवल दृश्य में एक बार पर्यवेक्षक जोड़ रहा हूं। –

3

मेरे लिए, inputAccessoryView बदलना keyboardWillShow की एक और कॉल आग करेगा क्योंकि इनपुट एक्सेसरी दृश्य की ऊंचाई समग्र कीबोर्ड ऊंचाई को प्रभावित करती है।

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