2009-05-05 14 views
20

मैं अपने iphone अनुप्रयोग में एक पाठ प्रविष्टि बॉक्स मिल गया है में चले जाओ, जब आप सिम्युलेटर में इसे छूने बनाने के लिए, कीबोर्ड पॉप अप। लेकिन इससे छुटकारा पाने का कोई रास्ता नहीं है। अन्य वेब पेज समाधान देते हैं, यह बताने के बिना कि उन्हें क्यों काम करना चाहिए, और वे मेरे लिए काम नहीं करते हैं। कोई कहता है कि टेक्स्ट बॉक्स के प्रतिनिधि को अपना यूवीव्यू करें, फिर ऑब्जेक्ट पर इस्तीफा देने वाले फॉर्निनेडर को कॉल करें, लेकिन इसे कभी भी कॉल नहीं किया जाता है। कोई सुझाव? क्या कोई समझा सकता है कि वास्तव में क्या चल रहा है? मैं इसे बाहर अपने आप लगा सकते हैं अगर मुझे पता था कि क्या डिजाइन प्रतिमान था ...कैसे कुंजीपटल iphone सिम्युलेटर

हो सकता है कि मैं सिर्फ डाल एक "जाओ" बटन तो मैं ध्यान केंद्रित पाठ फ़ील्ड से दूर होने के लिए कुछ है चाहिए? जब वापसी बटन दबाने

उत्तर

19

एक तरह से करने के लिए यह पाठ क्षेत्र के प्रतिनिधि के रूप में एक वस्तु की स्थापना की और

- (BOOL)textFieldShouldReturn:(UITextField *)textField 

लागू है जिसमें आप [textField resignFirstResponder]

फोन यह गायब हो जाते हैं जब वे धक्का कुंजीपटल का कारण होगा करने के लिए है वापसी/जाओ/किया गया बटन (जो भी आप नीचे दाएं कुंजीपटल कुंजी सेट करते हैं)।

अधिक जानकारी के लिए UITextFieldDelegate संदर्भ देखें।

+1

, मैंने पाया [ "अपना प्रथम आईओएस एप्लीकेशन "ट्यूटोरियल] (http://developer.apple.com/library/ios/#documentation/iPhone/Conceptual/iPhone101/Articles/00_Introduction.html) सहायक होने के लिए। इस उत्तर पर अधिक जानकारी के लिए, ["व्यू कंट्रोलर लागू करना"] में उप-अनुभाग "टेक्स्ट फ़ील्ड का प्रतिनिधि" देखें (http://developer.apple.com/library/ios/#documentation/iPhone/Conceptual/iPhone101/ लेख/06_ImplementingController.html)। – sage

+1

काफी सरल है, हालांकि यह डिफ़ॉल्ट व्यवहार क्यों नहीं है? यह हालांकि काम करता है .. ऊपर के रूप में इंटरफ़ेस को कार्यान्वित करें, और फ़ाइल के मालिक को आईबी में 'प्रतिनिधि' कनेक्शन को हुक-अप करें। – Bobby

+0

क्या मैं अपने टेक्स्ट फ़ील्ड के नाम से '[textField resignFirstResponder]' को प्रतिस्थापित करता हूं, जैसे '[myTextField resignFirstResponder] ', मैं इसे xcode 4.2 पर किसी भी तरह से काम करने के लिए नहीं मिल सकता। – raffian

5

- (BOOL)textFieldShouldReturn:(UITextField *)textField आपका प्रतिनिधि में कहा जाता है।

आप [textField resignFirstResponder] कॉल करने के लिए और फिर YES वापसी चाहते हैं। यह ट्रिक काम आना चाहिए। यह भी सुनिश्चित करें कि प्रतिनिधि सेट है। यदि संदेह है, तो ब्रेक पॉइंट या NSLog जोड़ें और सत्यापित करें।

16

कीबोर्ड को खारिज करने के लिए आप टेक्स्टफ़ील्ड प्रतिनिधि का उपयोग कर सकते हैं।

इसका उपयोग करने के लिए इन चरणों का पालन करें ...
1. आप देखें नियंत्रक। अपने ViewController में

@interface ViewController : UIViewController <UITextFieldDelegate> { 
    }
2.: इस तरह प्रतिनिधि घोषणा जोड़ें। मीटर कॉल इस विधि:
- (BOOL)textFieldShouldReturn:(UITextField *)textField
3. तो फिर इस तरह की एक कोड लिखने:
- (BOOL)textFieldShouldReturn:(UITextField *)textField { 
    [textField resignFirstResponder]; 
    return YES; 
    }
4. अंतिम चरण पाठ फ़ील्ड के प्रतिनिधि स्थापित करने के लिए है: जब पहली बार शुरू
- (void)viewDidLoad { 
     [super viewDidLoad]; 
     self.textField.delegate = self; 
    }

+0

क्या यह चाल एक ही विंडो में सभी टेक्स्ट फ़ील्ड के लिए काम करती है? – raffian

+0

हां, यह चाहिए ... वैसे भी अगर आप केवल कुछ टेक्स्ट फ़ील्ड पर प्रतिनिधि को लागू करना चाहते हैं, तो टेक्स्ट फ़ील्डशॉटरेटर्न में: विधि परिवर्तन [टेक्स्टफ़िल्ल्ड इस्तीफा फर्स्ट रेस्पॉन्डर]; [yourTextField इस्तीफा FirstResponder] के साथ; – matteodv

+0

यह काम नहीं कर सकता, सबकुछ किया, यहां तक ​​कि 'myTextField' भी जोड़ा।ViewController में 'initWithNibName' में प्रतिनिधि = self', लेकिन प्रतिनिधि को कभी नहीं बुलाया जाता है – raffian

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