2010-04-04 11 views
5

मेरे पास एक कस्टम कीबोर्ड है जिसे मैं दिखाना चाहता हूं जब उपयोगकर्ता UITextField को टैप करता है। लेकिन साथ ही मैं कर्सर को टेक्स्टफील्ड में दिखाना चाहता हूं। यदि अगर CanFecomeFirstResponder के लिए कोई NO वापस नहीं करता है, तो यह डिफ़ॉल्ट कीबोर्ड नहीं दिखाता है लेकिन कर्सर को भी नहीं दिखाता है।आईफोन - कीबोर्ड दिखाने के लिए संभव नहीं है लेकिन फिर भी कर्सर को UITextField में दिखाएं?

क्या कोई मेरी मदद कर सकता है?

धन्यवाद।

+0

कैसे अगर कोई कुंजीपटल है एक UITextField उपयोगी में एक कर्सर है (इस स्थिति में आप UITextViewDelegate में इसी तरीकों को ओवरराइड)?बहुत अधिक नहीं, शायद यही कारण है कि यह एक समर्थित सुविधा नहीं है। – psychotik

+0

एक कस्टम कीबोर्ड है। यही कारण है कि मैं डिफ़ॉल्ट कीबोर्ड को दिखाना नहीं चाहता, लेकिन फिर भी कर्सर चाहता है ताकि उपयोगकर्ता जानता हो कि वह टेक्स्ट – Swastik

+2

में प्रवेश कर रहा है, इसके लिए निश्चित रूप से इसका उपयोग है। शेरी, क्या आपको कोई जवाब मिला? –

उत्तर

0

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

+0

मैं डिफ़ॉल्ट कीबोर्ड नहीं चाहता आना। और मैं UILabel में कर्सर कैसे दिखा सकता हूं? – Swastik

+0

आह, तो क्या आप कह रहे हैं कि आपका कस्टम कीबोर्ड ऐसा कीबोर्ड नहीं है, यह सिर्फ बटनों का एक सेट है ताकि आप पूरी चीज़ को नकली बनाना चाहते हैं? – Andiih

2

रजिस्टर कुंजीपटल अधिसूचना पर्यवेक्षक के रूप में (जैसे दृश्य नियंत्रक जहां कुंजीपटल छुपाना चाहते हैं में): -

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(hideKeyboard:) name:UIKeyboardWillShowNotification object:nil]; 

hideKeyboard में रख: समारोह: -

-(void)hideKeyboard:(NSNotification *)notification { 

    for (UIWindow *keyboardWindow in [[UIApplication sharedApplication] windows]) { 
     for (UIView *keyboard in [keyboardWindow subviews]) { 
      if([[keyboard description] hasPrefix:@"<UIKeyboard"] == YES) { 

       keyboard.alpha = 0; 
      } 
     } 
    } 
} 

(के लिए धन्यवाद thispost में मुझे कीबोर्ड दिखाने के लिए दिखाने के लिए lvieere)

+0

आईओएस 4 में मेरे लिए काम नहीं करता है। विधि को बुलाया जाता है लेकिन किसी भी दृश्य में UIKeyboard –

+0

thnx खुश का उपसर्ग नहीं है .. वास्तव में सहायक है कि मैं कीबोर्ड और उसके काम को वास्तव में gr8 दिखाए बिना अपने टेक्स्टफील्ड में कर्सर ब्लिंकिंग दिखाना चाहता हूं ... –

0

आपकी समस्या के 2 समाधान हैं। 1) कीबोर्ड के अल्फा को 0 पर सेट करने से कीबोर्ड अदृश्य हो जाएगा ... जो आप चाहते हैं वह हो सकता है। कर्सर दिखाई देगा।

2) UITextField UITextInputTraits प्रोटोकॉल लागू करता है। जब यह पहला उत्तरदाता बनता है तो यह हमेशा कीबोर्ड को कॉल करेगा। उस डिफ़ॉल्ट व्यवहार को बदलने के लिए आपको या तो किसी भी या एथर क्लास से उत्तराधिकारी होना होगा।

शुभकामनाएं।

यदि आप हमें बताते हैं कि आप क्या करने की कोशिश कर रहे हैं तो हम इसे पूरा करने का एक और शानदार तरीका सुझा सकते हैं।

मज़े करें।

-1

आपको कर्सर की भी आवश्यकता क्यों है? मुझे लगता है कि आपको बस इतना करना है, जब कभी भी उपयोगकर्ता आपके कीबोर्ड पर एक कुंजी दबाता है, तो आप इनपुट के टेक्स्ट मान को अपडेट कर सकते हैं।

5

आपकी समस्या का उत्तर अपने कस्टम कीबोर्ड के लिए दृश्य बनाना है और फिर inputView अपनी UITextField की संपत्ति संपादित करें और इसे अपने कस्टम कीबोर्ड के लिए दृश्य पास करें।

मुझे उम्मीद है कि इससे मदद मिलती है।

+0

thanx ArturoVM मेरे लिए यह ठीक काम कर रहा है –

4

ऐसा लगता है कि आप एक कस्टम कीबोर्ड के साथ एक UITextField क्या चाहते हैं। कक्षा CustomKeyboard : UIView बनाएं और दृश्य/बटन जोड़ें। फिर अपने टेक्स्टफील्ड के लिए केवल कस्टम व्यूबोर्ड textField.inputView = customKeyboard; श्रेणी के इनपुट में इनपुट व्यू प्रॉपर्टी सेट करें। आपको inputView प्रॉपर्टी को रीडराइट करने के साथ-साथ @property (readwrite, retain) UIView *inputView; इनपुट व्यू प्रॉपर्टी सेट करके सेट करने की आवश्यकता होगी, टेक्स्टफ़ील्ड पहले प्रतिसादकर्ता बनने पर मानक आईफ़ोन कीबोर्ड दिखाई नहीं देंगे।

+0

यदि आप कस्टम कीबोर्ड कार्यक्षमता की आवश्यकता नहीं है (शायद आपका टेक्स्ट इनपुट अत्यधिक अपरंपरागत है) फिर एक डमी UIView (फ्रेम निर्दिष्ट किए बिना) बनाना और यह बनाना कि .inputView ठीक काम करेगा। फिर बस अपने टेक्स्ट फ़ील्ड पर फर्स्ट रेस्पॉन्डर बनें। – HenryRootTwo

3

UITextFieldDelegate में दो विधियों को ओवरराइड करें। ध्यान दें कि इस दृष्टिकोण दोनों UITextField और UITextView के लिए मान्य है

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField { 
    if (!textField.inputView) { 
     //hides the keyboard, but still shows the cursor to allow user to view entire text, even if it exceeds the bounds of the textfield 
     textField.inputView = [[UIView alloc] initWithFrame:CGRectZero]; 
    } 
    return YES; 
} 

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { 
    return NO; 
} 
संबंधित मुद्दे