2009-04-25 13 views
56

क्या UIKeyboard पर वापसी कुंजी को प्रोग्रामेटिक रूप से सक्षम या अक्षम करने का कोई तरीका है? सबसे नज़दीक मुझे मिल सकता है enablesReturnKeyAutomatically है, लेकिन यह केवल यह बताएगा कि इसे अक्षम करना है या नहीं।UITextField में रिटर्न कुंजी को अक्षम/सक्षम कैसे करें?

उत्तर

22

यदि आप UIKeyboard ऑब्जेक्ट स्वयं प्राप्त कर सकते हैं (एसडीके में कुछ नहीं उजागर किया गया है, तो आप दिमाग में हैं, इसलिए यदि आप इन कॉल का उपयोग करते हैं तो ऐप्पल खुश नहीं हो सकता है), फिर एक सुविधाजनक सेटरेटर्नके सक्षम है: सदस्य फ़ंक्शन।

id keyboard = [self magicallyGetAUIKeyboardInstance]; 
[keyboard setReturnKeyEnabled: NO]; 

(2,2 iPhone चौखटे के Erica Sadun's dump के माध्यम से) magicallyGetAUIKeyboardInstance के कार्यान्वयन here वर्णन किया गया है।

+0

अभी तक इसका परीक्षण करने का मौका नहीं मिला है, लेकिन केवल [UIKeyboard activeKeyboard] काम नहीं करना चाहिए? –

+0

क्या यह सुनिश्चित है कि ऐप्पल इस ऐप का उपयोग करने वाले ऐप को अस्वीकार कर देगा? भले ही कार्यान्वयन उचित है? – samvermette

+0

@sam यह बहुत ही असंभव है कि सेब इस विधि के लिए आपके कॉल के लिए परीक्षण करेगा, लेकिन क्या यह संभव है कि वे अंतर्निहित एपीआई बदल जाएंगे और अपना कोड तोड़ देंगे। – bshirley

2

एक अच्छा विचार यह है कि इस वर्ग को कहीं से भी एक्सेस करने के लिए एक फ़ाइल बनाना है।

UIKeyboard.h

#import <UIKit/UIKit.h> 

@interface UIApplication (KeyboardView) 

    - (UIView *)keyboardView; 

@end 

UIKeyboard.m

#import "UIKeyboard.h" 

@implementation UIApplication (KeyboardView) 

- (UIView *)keyboardView 
{ 
    NSArray *windows = [self windows]; 
    for (UIWindow *window in [windows reverseObjectEnumerator]) 
    { 
     for (UIView *view in [window subviews]) 
     { 
      if (!strcmp(object_getClassName(view), "UIKeyboard")) 
      { 
       return view; 
      } 
     } 
    } 

    return nil; 
} 

@end 

अब आप आयात और अपने खुद के वर्ग से इस वर्ग का उपयोग कर सकते:

#import "UIKeyboard.h" 

    // Keyboard Instance Pointer. 
    UIView *keyboardView = [[UIApplication sharedApplication] keyboardView]; 
यहाँ कोड है

इस वर्ग आप यहां पा सकते हैं की एक पूरी प्रलेखन:http://ericasadun.com/iPhoneDocs/_u_i_keyboard_8h-source.html

अधिक जानकारी आप यहाँ पा सकते हैं:http://cocoawithlove.com/2009/04/showing-message-over-iphone-keyboard.html

+6

ऐप स्टोर अस्वीकृति संभावना: 100% – Barry

64

कोड खंड निम्नलिखित किया जा सकता है में मदद करता है।

textfield.enablesReturnKeyAutomatically = YES; 

यह सार्वजनिक रूप से UITextInputTraits में iPhone SDK में उपलब्ध है। इस का उपयोग करना, वापस कुंजी पर अक्षम हो जाएगा कोई इनपुट पाठ पाठ क्षेत्र के भीतर उपलब्ध है

+60

@ Pyraego.com, कोई अनादर नहीं है, लेकिन यह जवाब "अच्छा खोज" कैसे है जब यह उत्तर ओपी के प्रश्न में पहले से ही निहित था? –

+1

स्विफ्ट में: textfield.enablesReturnKeyAutomatically = true – AmyNguyen

+3

शायद मूर्खतापूर्ण आवाज हो सकती है, लेकिन जब मैं यहां आया तो मैं यह जवाब चाहता था। जैसा कि मुझे लगता है कि बहुत से लोग करते हैं, मैंने Google में आने वाले पहले लिंक पर अंधाधुंध क्लिक किया, सवाल पूरी तरह से छोड़ दिया और –

21

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

enter image description here

बेशक

, यदि आप कोड में इस बदलने की जरूरत है आप अभी भी सेट कर सकते हैं यह प्रोग्राम के रूप में nameTextField.enablesReturnKeyAutomatically = true का उपयोग कर।

संपादित downvotes संबोधित करने के लिए:

अन्यथा, वहाँ सक्षम और आदेश पर return कुंजी निष्क्रिय करने के लिए कोई आधिकारिक तरीका है। मैं इसे पूरा करने के लिए निजी एपीआई का उपयोग करने की कोशिश करने के खिलाफ सिफारिश करेंगे। वैकल्पिक रूप से, आप textFieldShouldReturn: प्रतिनिधि विधि का उपयोग कर सकते हैं और वहां अपनी सशर्त/सत्यापन डाल सकते हैं और तदनुसार जवाब दे सकते हैं।

8

आप इस लक्ष्य को हासिल करने के लिए UITextField के hasText विशेषता ओवरराइड कर सकते हैं:

class CustomTextField : UITextField { 
    override public var hasText: Bool { 
     get { 
      return evaluateString(text) 
     } 
    } 
} 

जहाँ आपके जरूरत इनपुट मानदंडों के खिलाफ evaluateString(_ text: String?) -> Bool चेक, उदाहरण के चरित्र गिनती के लिए।

बेशक यह केवल enablesReturnKeyAutomatically = trueUITextField पर सेट के साथ संयोजन में काम करता है।

मुझे पता है कि मेरा जवाब न तो समय पर और न ही उद्देश्य-सी में लिखा गया है, लेकिन यह देखते हुए कि मैं कहीं और जवाब नहीं ढूंढ पाया है और यह प्रश्न नियमित रूप से अन्य धागे में संदर्भित किया जा रहा है, मुझे लगता है कि यहां है इसे पोस्ट करने के लिए सबसे अच्छी जगह है।

+0

उत्तर के पहले जोड़े को पढ़ा, यह काम करता है, लेकिन पासवर्ड कीबोर्ड का कारण बनता है। – Sethmr

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