2012-01-11 23 views
7

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

लेकिन यहां से मैं इस बात से परेशान हूं कि पाठ क्षेत्र में मेरे कीस्ट्रोक को सबसे अच्छा कैसे भेजना है। मैंने iOS Custom Keyboard Updating Text Field In Parent View और Return Inputs To UITextfield With Custom Inputview और How To Push Key Value Into UITextView From Custom Keyboard In iOS जैसे कई उदाहरण देखे हैं जहां समाधान कस्टम दृश्य के अंदर UITextField पर पॉइंटर एम्बेड करने के लिए प्रतीत होता है।

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

ऐसा लगता है कि एक कीबोर्ड को टचेंस में टचों का अनुवाद करना चाहिए और उन टोकन को उस पंक्ति को भेजना चाहिए जिसे किसी भी व्यक्ति द्वारा प्राप्त किया जाता है (पहला उत्तरदाता?)। iPad For iPhone Developers 101 Custom Input View Tutorial ऐसा करने लगता है, लेकिन ऐसा करने के लिए एक कस्टम प्रोटोकॉल बनाता है। मैं कल्पना करता हूं (वास्तव में एक SWAG - वैज्ञानिक जंगली Arsed अनुमान) कि मानक आईओएस कीबोर्ड इस तरह काम करते हैं, लेकिन keystrokes के साथ पास करने के लिए एक विशिष्ट प्रोटोकॉल का उपयोग करें। तो मैं जो करने में सक्षम होना चाहता हूं वह मानक कीबोर्ड की घटनाओं/संदेशों की एक ही श्रृंखला को मैन्युअल रूप से उत्पन्न करना है।

तो मैं यह कैसे कर सकता हूं? या मैं इसे सार्वजनिक एपीआई के साथ भी कर सकता हूं? या यूआईटीएक्स्टफाल्ड को बहुत कसकर मानक कीबोर्ड का संचालन है?

+0

मुझे पता है कि यह प्रश्न पुराना है, लेकिन मैंने नंबरपैड नामक इसे कैसे करें, और इसे [गीथूब] (https://github.com/lnafziger/Numberpad) पर रखने के लिए एक पूर्ण, काम करने वाला, खुला स्रोत उदाहरण बनाया है।) – lnafziger

उत्तर

1

यह एक बहुत ही खुला प्रश्न है। वास्तव में, आप जो चाहते हैं उसे चुनने के लिए आप पर निर्भर है। Apple's documentation यह कहता है:

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

तुम भी एक UITextField उपवर्ग कर सकता है और स्पष्ट रूप से अपने कस्टम कुंजीपटल दृश्य वर्ग के लिए एक सूचक वापस जाने के लिए inputView के लिए गेटर को लागू। इस गेटटर में आप एक यूआईसींट्रोल-जैसी लक्ष्य/एक्शन सिस्टम स्थापित कर सकते हैं जैसा कि आप पहले सुझाते हैं। ऐसा करने से कस्टम कीबोर्ड को बाहर से सेट करने की आवश्यकता को हटा दिया जाता है - यह सब आंतरिक रूप से संभाला जाता है। यह उस कोड को केवल एक ही स्थान पर रखता है।

एक बार जब कस्टम टेक्स्ट फ़ील्ड पहले उत्तरदाता से इस्तीफा दे देता है, तो आप कीबोर्ड फ़ील्ड के टेक्स्ट फ़ील्ड के पॉइंटर को स्ट्रिप कर सकते हैं।

+0

एक अर्थ में मैं बिल्कुल पूछ रहा हूं कि ऐप्पल डॉक्स राज्य - डेटा इनपुट को लागू करने के तरीके। इस मामले में मैं उन तरीकों को मानक मानकों को अनुकरण करना चाहता हूं ताकि मैं अपने कीबोर्ड को सेब के लिए न्यूनतम कोड परिवर्तनों के साथ बदल सकूं (यानी सेटिंग इनपुट या केवल सेटिंग नहीं देख रहा हूं)। UITextField को उपclassing अन्य कारणों से मेरी सूची में है (और इस मामले में भी मेरी फॉलबैक है), लेकिन मैं अभी भी मैनुअल मैनिपुलेशन होने के लिए उप-वर्ग में यूआईटीएक्स्टफिल्ड पॉइंटर्स को शफल करने पर विचार करता हूं और यह मुझे पहले से ही एक संदेश पास करने वाले संदेश में ऐसा करने के लिए अपमानित करता है जो मैं चाहता हूं उसे करने में सक्षम –

+0

मुझे लगता है कि आप कस्टम कीबोर्ड कार्यक्षमता को उस चीज़ में बना रहे हैं जो यह नहीं है। एक कस्टम कीबोर्ड सिर्फ एक दृश्य है। यह ऐप्पल के निजी कीबोर्ड ढांचे (एक बड़ी और जटिल चीज) का कुछ विशेष उप-वर्ग नहीं है जो आपको अपने सिस्टम में हुक देता है। कल्पना करें कि क्या आपने एक कस्टम कीबोर्ड बनाया है जहां उपयोगकर्ता पाठ दर्ज करने के लिए बटन नहीं दबाता है, बल्कि इसके बजाय चित्र खींचता है। ऐप्पल का आंतरिक कुंजी अग्रेषण कोड संभवतः इस डेटा को टेक्स्ट फ़ील्ड में कैसे भेज सकता है? – pe8ter

0

मैं आईओएस के लिए नया हूं, इसलिए कृपया मुझे माफ़ कर दो अगर मैं जो कह रहा हूं उसे कोई समझ नहीं आता है (और कृपया मुझे सही करने के लिए पर्याप्त दयालु रहें)। : डी

क्या आपके कस्टम कीबोर्ड के लिए मुख्य UIView में सभी UITextFields के माध्यम से FistResponder की तलाश करने और उसके संदेश को उस प्रथम रेस्पॉन्डर को भेजने का कोई तरीका नहीं है? मेरा मतलब है, UIView में एक सबव्यूज प्रॉपर्टी है जहां आप UITextFields को देख सकते हैं और [UITextField isFirstResponder] प्रॉपर्टी का उपयोग करके फर्स्ट रेस्पॉन्डर ढूंढ सकते हैं। फिर, क्या आप उस वस्तु का उपयोग कर सकते हैं?

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

+0

मैं समझता हूं कि आप क्या कह रहे हैं लेकिन मुझे यकीन नहीं है कि यह मेरे द्वारा किए जा रहे कार्यों से बेहतर है। मुझे पहले से ही एक विशिष्ट पाठ फ़ील्ड में एक कस्टम कीबोर्ड का एक ठोस उदाहरण असाइन करना होगा। तो मेरे लिए यह एक छोटा सा रुबे गोल्डबर्ग है जो कुंजीपटल स्वयं को पहले प्रतिक्रियाकर्ता को खोजने के लिए दृश्य स्टैक के माध्यम से खोजता है। मेरे लिए जो गुम है वह कुंजीपटल को टेक्स्ट फ़ील्ड के स्पष्ट ज्ञान दे रहा है जो इसे बाध्य करता है। –

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