2012-09-14 4 views
5

मेरे पास एक UIVIew है जो एक सबव्यूव है और इसमें कई UITextFields हैं। इनमें से एक टेक्स्टफील्ड (जो DATE के लिए है) कीबोर्ड का उपयोग करके संपादन योग्य नहीं होना चाहिए, इसके बजाय मैं एक पॉपपॉवर का उपयोग डेटपिकर के अंदर करता हूं।UIVIew endEditing: हाँ कीबोर्ड को छिपा नहीं है

UIControlEventEditingDidBegin पहुंचने पर मैं एक विधि चलाता हूं। यह विधि DateTextField पर resignFirstResponder पर कॉल करती है।

सब कुछ ठीक काम करता है अगर डेटटेक्स्ट फ़ील्ड संपादित करने वाला पहला क्षेत्र है, लेकिन जब एक और टेक्स्टफिल्ड संपादित किया जाता है और निश्चित रूप से कीबोर्ड दिखाता है और फिर डेटफिल्ड को संपादित करने का प्रयास करता है, तो कीबोर्ड छुपा नहीं जाता है और सबकुछ सामान्य हो जाता है लेकिन कीबोर्ड कुछ भी कर रहा है।

मैंने resignFirstResponder से पहले विधि endEditing:YES पर कॉल करने का प्रयास किया है लेकिन यह काम नहीं करता है। मैंने और resignFirstResponder को didEndEditing टेक्स्ट फ़ील्ड विधि पर चलाने का प्रयास किया है, लेकिन उस कीबोर्ड को प्राप्त करने का कोई तरीका नहीं है।

यहाँ मेरी विधि है:

- (void)showDatePopOver:(id)sender{ 
    [self.view endEditing:YES]; 

    UITextField *textField = (UITextField *)sender; 
    [sender resignFirstResponder]; // hide keyboard 

    /** POP OVER LINES**/ 
} 

उत्तर

2

इसके बजाय आप didBeginEditing में पहली प्रत्युत्तर इस्तीफे के textFieldShouldBeginEditing: प्रतिनिधि विधि का उपयोग करना चाहिए:

:

यह सभी पर संपादन लेकिन dateTextField पाठ क्षेत्र की अनुमति देगा

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField { 
    return (![textField isEqual:dateTextField]); 
} 

आपको यह निर्दिष्ट करना चाहिए कि आपका व्यू कंट्रोलर एक टेक्स्ट व्यू प्रतिनिधि भी है (जैसा कि मैं nterface घोषणा [.h फ़ाइल]):

@interface MyViewController : UIViewController <UITextFieldDelegate> 
+0

आपको बहुत धन्यवाद, यह अब काम करता है। मुझे UIControlEventEditingDidBegin को UIControlEventTouchDown – chost

+0

पर ईवेंट को भी बदलना पड़ा, खुशी है कि आप इसे ठीक कर चुके हैं! हैप्पी कोडिंग – chown

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