2012-04-30 28 views
39

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

-(IBAction)backgroundTouched:(id)sender { 
[textField1 resignFirstResponder]; 
[buildLength resignFirstResponder]; 
[buildWidth resignFirstResponder]; 
[ridgeWidth resignFirstResponder]; 
[rafterWidth resignFirstResponder]; 
[hipWidth resignFirstResponder]; 
[eaveOverhang resignFirstResponder]; 
[spacing resignFirstResponder]; 

}

+0

क्या वस्तु 'backgroundTouched प्राप्त कर रहा है:' कार्रवाई? क्या यह विचार है? कुछ वस्तु जो आपने सब कुछ पीछे रखी है? आईओएस पर छिपाने के लिए मुझे कीबोर्ड प्राप्त करने का तरीका व्यू कंट्रोलर के 'स्पर्शों को ओवरराइड करना है: साथ: IVE:'। यह तब कहा जाता है जब कोई अन्य ऑब्जेक्ट टच इवेंट को संभालने में सक्षम नहीं होता है। वहां जहां मैंने पहले उत्तरदाता से इस्तीफा दे दिया, हालांकि आपको 'isFirstResponder' की जांच करने की आवश्यकता है क्योंकि यदि आप स्पर्श का उपभोग नहीं करते हैं तो आपको सुपर कॉल करने का अनुमान है। – Russ

+0

@Russ के साथ सहमत हैं ... दृश्य नियंत्रक पर स्पर्श घटनाएं जाने का आसान तरीका है। लेकिन यह अभी भी रहस्यमय है अगर यह टेक्स्ट फ़ील्ड 1 के लिए काम करता है। दूसरों को क्यों नहीं? मेरा अनुमान है कि अन्य हैंडल कोई अच्छा नहीं है (उदा। कि 'बिल्ड लम्बाई' ठीक से शुरू नहीं हुआ है)। – danh

उत्तर

2

आप UITouch विधि की कोशिश कर सकते हैं, और इस में अपने पाठ क्षेत्र ऑब्जेक्ट सेट और resignFirstResponder फोन जब कभी आप स्क्रीन कीबोर्ड इस्तीफा दे दूंगा पर स्पर्श, मुझे आशा है कि यह आपके लिए काम करेंगे।

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    [currentSelectedTextField resignFirstResponder]; 
} 
186

आप कीबोर्ड छिपाने के लिए जब आप एक बटन को टैप करना चाहते हैं और आप एक से अधिक अपने view में एक UITextFields है, तो आप का उपयोग करना चाहिए:

[self.view endEditing:YES]; 

नल कहीं भी दृश्य पर, और कीबोर्ड गायब हो जाएगा।

+0

मैंने देखा, कि कुछ मामलों में यह विधि 0.3 सेकंड अधिकतम कुछ देरी के बाद काम करती है। मेरा मतलब है, इस्तीफा देना फर्स्ट रेस्पॉन्डर तुरंत कीबोर्ड हटा देता है। लेकिन इस विधि का उपयोग करने के बाद कभी-कभी देरी के बाद प्रदर्शन चयनकर्ता का उपयोग करना चाहिए। – wzbozon

6

आप दृश्यों की एक श्रृंखला (जैसे आपके यूआईवीव के सबव्यूव्यू) के माध्यम से भी पुनरावृत्ति कर सकते हैं और कीबोर्ड को मैन्युअल रूप से इस्तीफा दे सकते हैं, यह अच्छा है अगर आप अपने माता-पिता UIView के भीतर सभी सबव्यूज़ पर इस्तीफा देना नहीं चाहते हैं।

- (void)viewDidLoad 
{ 
    self.view.userInteractionEnabled = TRUE; 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view, typically from a nib. 
} 

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{ 
    //Iterate through your subviews, or some other custom array of views 
    for (UIView *view in self.view.subviews) 
     [view resignFirstResponder]; 
} 
27

इस प्रयास करें:

- (void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    [[self view] endEditing:YES]; 
}