2014-07-21 9 views
6

मैं स्विफ्ट में आईओएस 8 के लिए एक कस्टम कीबोर्ड एक्सटेंशन लिख रहा हूं, और मुझे एक स्वाइप-स्टाइल स्क्रिबल ओवरले लागू करने में समस्या हो रही है। अभी, मेरे कीबोर्ड में UIView (view मेरी UIInputViewController की संपत्ति) है जिसमें कुंजीपटल पर कुंजी के अनुरूप UIButtons है। इनमें से प्रत्येक कुंजी touchUpInside घटनाओं का जवाब देती है, और UISwipeGestureRecognizers है जो इनपुट माध्यमिक वर्ण ऊपर या नीचे स्वाइप करते हैं। मेरे UIInputViewController में मेरे स्क्रिबल ओवरले व्यू को हटाने के लिए मैंने अपने स्क्रबबल ओवरले व्यू को सबव्यूव और touchesEnded:withEvent: के रूप में जोड़ने के लिए touchesBegan:withEvent: ओवरराइड किया है।मैं सशर्त रूप से स्पर्श घटनाओं को कैसे रोकूं?

वर्तमान में, यदि मैं बटन के बीच कुछ अंतर से शुरू करने का प्रयास करता हूं, तो स्क्रिलबल ओवरले दृश्य ठीक से दिखाई देता है। हालांकि, अगर मैं UIButton के शीर्ष से स्क्रिबलिंग शुरू करता हूं, तो UIButton स्पर्श ईवेंट को कैप्चर करता है और इसे मेरे UIInputViewController पर अग्रेषित नहीं करता है।

मैं अपने कीबोर्ड को इस तरह से कैसे कार्यान्वित कर सकता हूं कि उपयोगकर्ता स्क्रीबल ओवरले दृश्य दिखाई देता है यदि उपयोगकर्ता बटन के बीच स्क्रीबल्स करता है, लेकिन बटन प्रेस/स्वाइप करता है अन्यथा?

--EDIT--

मैं अगले प्रत्युत्तर के लिए घटना को अग्रेषित करने के touchesBegan/Moved/Ended/Cancelled तरीकों अधिभावी द्वारा इस को हल करने का प्रयास किया है। यदि मैं एक बटन पर क्लिक करता हूं और फिर दूसरे पर क्लिक करता हूं, तो मैं दोनों के बीच दिखाई देने के लिए एक स्क्रिबल प्राप्त कर सकता हूं। हालांकि, मुझे बटन के बीच एक स्क्रिबल के रूप में बटन पर आकर्षित करने के लिए कुछ भी नहीं मिल सकता है। किसी के पास एक बेहतर विचार है?

--EDIT # 2--

वर्तमान में, मेरे विचार पदानुक्रम इस तरह की स्थापना की है: UIView subviews (UIInputViewController से): मेरे सभी बटन, फिर मेरे ScribbleView subviews डालने।

यदि मैं userInteractionEnabled को अपने ScribbleView पर सत्य पर सेट करता हूं, तो मैं शुरुआती स्थान पर ध्यान दिए बिना, कहीं भी दिखाई देने के लिए scribbling प्राप्त कर सकता हूं, लेकिन फिर मैं अपनी बटन कार्यक्षमता खो देता हूं।

स्रोत कोड के लिए, मैं छूने वाली घटनाओं और क्या नहीं, पास करने के विभिन्न विन्यासों के साथ प्रयोग कर रहा हूं, लेकिन कोड का मुख्य भाग यहां पाया जा सकता है: https://github.com/Kamaros/ELDeveloperKeyboard

उत्तर

0

मैं अनुमान लगा रहा हूं, क्योंकि मैंने अभी तक UIInputViewControllers के साथ काम करने की कोशिश नहीं की है। लेकिन इन घटनाओं को आपके UIInputViewController में अग्रेषित करने के लिए UIButton को उपclassing और फिर touchesBegan:withEvent: और touchesEnded:withEvent: विधियों को ओवरराइड करने के बारे में कैसे?

+0

निश्चित रूप से एक विकल्प, हालांकि मुझे यकीन नहीं है कि यह प्रत्येक बटन से जुड़ी इशारा पहचानकर्ताओं के संयोजन के साथ कैसे काम करेगा। हालांकि कोशिश करने के लायक है, अगर कोई भी और अधिक चालाक सोचता है। – Kamaros

+0

चूंकि आप बटन (और बटन पर नहीं) के बीच स्क्रिबल प्राप्त कर रहे हैं, क्या यह केवल पदानुक्रम देखने का मामला नहीं है? मेरा मतलब है, क्या आप बटन के नीचे ही नहीं आ रहे हैं? दोबारा, यह सिर्फ एक अनुमान है क्योंकि मेरे पास आपके कोड तक पहुंच नहीं है। वैकल्पिक रूप से, यदि आप क्लुज में हैं, तो आप हमेशा जहां भी चित्रित कर रहे हैं, वहां ड्राइंग करने के बजाय, आप सभी बटनों के ऊपर एक खाली UIView डाल सकते हैं और उस पर आकर्षित कर सकते हैं। –

0

मुझे लगता है कि आपको अपने स्क्रिबल व्यू इंटरैक्शन को सेट करने की आवश्यकता है, जो YES को सक्षम है और स्पर्श करने वाले बटन के नीचे दिए गए बटन पर अग्रेषित करें। उदाहरण के लिए, यदि आप एक ही स्थान या टैप में एक लंबी प्रेस को पहचानते हैं तो आप जानते हैं कि उपयोगकर्ता बटन दबा देना चाहता है।

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