2012-04-10 31 views
11

मैंने अपने UITextField पर एक कस्टम inputView सेट किया है। मुझे UITextfield में मेरे कस्टम inputView में चुने गए डेटा को प्रदर्शित करने का एक तरीका चाहिए। मैं इसे सिस्टम कीबोर्ड के समान तरीके से प्राप्त करना चाहता हूं।UITextField के लिए कस्टम इनपुट व्यू, मैं टेक्स्ट फ़ील्ड में इनपुट को वापस कैसे निर्देशित करूं?

क्या कोई जानता है कि यह कैसे किया जाता है? सिस्टम कीबोर्ड को UITextfield का संदर्भ मिलता है जो पहला उत्तरदाता है?

+0

कृपया अधिक सटीक रहें, "टेक्स्टफील्ड पर सीधे इनपुट" का क्या मतलब है? आप UITextField पर ध्यान केंद्रित करना चाहते हैं? – Dion

+0

क्षमा करें, मैंने सोचा कि मैं अपने स्पष्टीकरण में अधिक सटीक था। मेरा मतलब यह है कि, मैंने अपने कस्टम इनपुट व्यू में UITextField पर inputView प्रॉपर्टी सेट की है। तो जब उपयोगकर्ता मेरे कस्टम इनपुट व्यू पर एक बटन दबाता है, तो मैं यूआईटीएक्स्टफील्ड का संदर्भ कैसे प्राप्त करूं जो वर्तमान पहले उत्तरदाता है, इसलिए मैं उस यूआईटीएक्स्टफील्ड की टेक्स्ट प्रॉपर्टी को उपयोगकर्ता के इनपुट को प्रतिबिंबित करने के लिए बदल सकता हूं? –

उत्तर

12

सिस्टम कीबोर्ड को यूआईटीएक्स्टफील्ड का संदर्भ कैसे मिलता है जो पहला उत्तरदाता है?

यह सिर्फ पहले उत्तरदाता के लिए सिस्टम से पूछता है; दुर्भाग्यवश, यह एक निजी UIKit विधि है (या, आखिरी बार मैंने चेक किया था)। आप दृश्य पदानुक्रम के माध्यम से पुनरावर्ती करके और प्रत्येक दृश्य पूछकर पहला उत्तरदाता पा सकते हैं, लेकिन यह बहुत बेकार है।

इसके बजाय, आप इनपुट दृश्य पर पाठ क्षेत्र के लिए एक लिंक जोड़ सकते हैं (मैं अपने इनपुट दृश्य एक कस्टम UIView उपवर्ग संभालने कर रहा हूँ है):

@property(nonatomic, assign) UITextField* target; 

फिर अपने दृश्य में UITextField प्रतिनिधि तरीकों का उपयोग नियंत्रक जब पाठ क्षेत्र ध्यान केंद्रित किया जा रहा है देखने के लिए:

- (void)textFieldDidBeginEditing:(UITextField*)textField 
{ 
    if ([textField.inputView isKindOfClass:[MyInputView class]]) 
     ((MyInputView*)textField.inputView).target = textField; 
} 

- (void)textFieldDidEndEditing:(UITextField*)textField 
{ 
    if ([textField.inputView isKindOfClass:[MyInputView class]]) 
     ((MyInputView*)textField.inputView).target = nil; 
} 
+0

ग्रेट उत्तर डेव, यही वही है जो मैं खोज रहा था, धन्यवाद। –

10

जब वापस पाठ फ़ील्ड में अपनी कस्टम इनपुट व्यू से इनपुट भेजने, ध्यान दें कि आप UIKeyInput प्रोटोकॉल तरीकों कि UITextField के अनुरूप का उपयोग करें (चाहिए) कर सकते हैं। अर्थात्:

- (void)deleteBackward; 
- (void)insertText:(NSString *)text;