2010-05-20 11 views
17

आईपैड वर्चुअल कीबोर्ड (कम से कम) इन 3 से कोई एक परिस्थिति में गायब हो जाएगा:बाहरी कीबोर्ड कनेक्ट बनाम आईपैड कीबोर्ड छिपाने का पता लगाना?

  1. नियंत्रण (जैसे कि, एक UITextField) प्रोग्राम के रूप में पहले प्रत्युत्तर इस्तीफा है।
  2. यदि उपयोगकर्ता निचले दाएं भाग में "कीबोर्ड को खारिज करें" बटन टैप करता है।
  3. यदि उपयोगकर्ता यूएसबी/कीबोर्ड डॉक परिधीय से कनेक्ट होता है।

सभी मामलों में, मुझे UIKeyboardWillHideNotification मिलता है।

समस्या यह है कि पहले दो मामले आम तौर पर समकक्ष होते हैं - दूसरे शब्दों में, उपयोगकर्ता को टेक्स्ट फ़ील्ड को संपादित किया जाता है। लेकिन तीसरे मामले में, टेक्स्ट फ़ील्ड अभी भी एक और इनपुट स्रोत से संपादित किया जा रहा है।

समस्या 2 और 3 के बीच अंतर का पता लगा रही है। मुझे दोनों मामलों में UIKeyboardWillHideNotification है। 2 मामले में, मैं आम तौर पर संपादन नियंत्रण को लॉक करना चाहता हूं और मूल्य को प्रतिबद्ध करना चाहता हूं। 3 मामले में, मैं आम तौर पर कुछ भी नहीं करना चाहता और संपादन जारी रखने की अनुमति देता हूं।

लेकिन मैं अंतर कैसे बता सकता हूं?

ऐप्पल के पेज ऐप दस्तावेज़-शीर्षक नामकरण पर इसे अलग करने में सक्षम होने लगते हैं।

उत्तर

2

मैं UIKeyboardBoundsUserInfoKey को अधिसूचना के साथ पास करूँगा। भौतिक कीबोर्ड में शायद खाली सीमाएं हैं।

+0

दुर्भाग्य से कोई। जब यह प्रकट होता है तो भौतिक कीबोर्ड UIKeyboardWillShowNotification उत्पन्न नहीं करता है। इसे संलग्न करने से केवल वर्चहाइड अधिसूचना उत्पन्न होती है जो वर्चुअल एक से मेल खाती है। –

+0

मामले में 1, नियंत्रण फोकस खो देता है। 2 मामले में वही सच है? मुझे लगता है कि 3 मामले में नियंत्रण फोकस बरकरार रखता है। – drawnonward

+0

मामलों 2 और 3 में, नियंत्रण पहले जारी रहता है। पहले उत्तरदाता का इस्तीफा कुंजीपटल को खारिज कर देगा, लेकिन विपरीत स्पष्ट रूप से सच नहीं है। –

2

ऐसा लगता है कि आप यह समझने की कोशिश कर रहे हैं कि उपयोगकर्ता कब संपादन कर रहा है। आप 2.

मामलों 1 के लिए UITextFieldTextDidEndEditingNotification अधिसूचना और एक बहुत सरल समाधान हो तुम सिर्फ UITextField की editing संपत्ति के खिलाफ जांच नहीं कर सकता है निर्धारित करने के लिए करता है, तो यह अभी भी या संपादित नहीं किया जा चाहिए था होगा को सुन सके? मेरे पास भौतिक कीबोर्ड नहीं है, इसलिए मेरे पास इसका परीक्षण करने का कोई तरीका नहीं है। मैं बस अनुमान लगा रहा हूँ।

यहाँ है कि संपत्ति पर दस्तावेजीकरण के लिए एक लिंक है: http://developer.apple.com/iphone/library/documentation/UIKit/Reference/UITextField_Class/Reference/UITextField.html#//apple_ref/occ/instp/UITextField/editing

मैं बहुत पता करने के लिए अगर यह काम करता है या नहीं उत्सुक हूँ ... :)

+0

मामले # 2 के लिए, टेक्स्ट फ़ील्ड अभी भी संपादन कर रहा है, और यह अभी भी पहला उत्तरदाता है। बस कोई कीबोर्ड नहीं है। –

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