2010-07-22 18 views
5

आईपैड सफारी में, मैंने एक डीवीवी के टच-इवेंट प्रोग्राम किए हैं ताकि जब आप डीआईवी के अंदर छूएं और 500   एमएस के लिए अपनी उंगली पकड़ लें, डीआईवी का पृष्ठभूमि रंग बदलता है।क्या टच ईवेंट आईपैड सफारी में टेक्स्ट-इनपुट तत्वों के साथ काम नहीं करते हैं?

जब मैं कोड को टेक्स्ट-इनपुट तत्व (फ़ील्ड्स के अंदर) में स्थानांतरित करने का प्रयास करता हूं, तो इसे DIV के बजाय स्पर्श-लक्ष्य बना देता है, कोड काम नहीं करता है। पाठ इनपुट इस सीएसएस के बावजूद चयनित हो जाता है:

input[type=text] {-webkit-touch-callout:none; -webkit-user-select:none } 

वहाँ iPad सफारी में एक पाठ-इनपुट तत्व के स्पर्श की घटनाओं को रोकने और उन्हें एक कस्टम ढंग से संभाल, डिफ़ॉल्ट व्यवहार को रोकने के लिए कोई रास्ता नहीं है? या क्या कुछ अतिरिक्त है जो मुझे समर्थन देने के लिए इनपुट प्राप्त करने के लिए करना चाहिए? मैंने डमी क्लिक हैंडलर के साथ और बिना कोशिश की है: ऑनक्लिक = "शून्य (0)"।

यह दस्तावेज़ मैं प्रलेखन Handling Events अनुसरण कर रहा हूँ है।

उत्तर

1

यदि आप अपना कोड पोस्ट करते हैं तो यह सहायक होगा, लेकिन मुझे लगता है कि आपको शायद स्पर्श घटनाओं पर डिफ़ॉल्ट व्यवहार को रोकने की आवश्यकता है। यह कुछ इस तरह दिखता है, तो jQuery का उपयोग कर:

$("#ID") 
     .bind("touchstart", 
      function (e) { 
       e.preventDefault(); 
       //do something 
      }) 
     .bind("touchmove", 
      function (e) { 
       if (e.preventDefault) { 
        e.preventDefault(); 
       } 
       //do something 
      }); 
1

कोशिश अक्षम करें और केवल पढ़ने के लिए अपने इनपुट बनाने के लिए:

<input type="text" readonly /> 
+0

मुझे टेक्स्ट इनपुट स्वीकार करने के लिए इनपुट की आवश्यकता है। – Tim

1

आप अपने हैंडलर कोड में preventDefault() फोन नहीं करते हैं, तो ब्राउज़र स्वत: पारित करेंगे डिफ़ॉल्ट कार्यान्वयन के माध्यम से ईवेंट स्पर्श करें (आपको लगता है कि आपने इसे संभाला है)। डिफ़ॉल्ट कार्यान्वयन क्षेत्र का चयन करना है।

तो, आपके मामले में, अपने हैंडलर में preventDefault() और stopPropagation() कहते हैं, और झूठी वापसी। यह घटना को आगे बुलबुले से रोकता है। फिर आप अपने इनपुट तत्व को पूरी तरह से नियंत्रित कर सकते हैं।

चेतावनी: फिर आप भी इनपुट क्षेत्र के डिफ़ॉल्ट व्यवहार को खो देंगे! दूसरे शब्दों में, आप फ़ील्ड में टेक्स्ट इनपुट करने में सक्षम नहीं होंगे! या यदि इनपुट क्षेत्र एक <select> है, तो आप सूची से निकालने के लिए सक्षम नहीं होगा आदि

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

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

+0

उत्तर देने के लिए धन्यवाद। हां, मुझे सामान्य पाठ इनपुट जैसे इनपुट स्वीकार करने के लिए इनपुट की आवश्यकता है। मैं वर्चुअल कीबोर्ड के अपने अंतर्निहित संदर्भ-मेनू पर वर्णित वर्ण प्रदर्शित करने के लिए इनपुट पर संदर्भ-मेनू बनाना चाहता हूं, यानी जब आप थोड़ी देर के लिए अपनी अंगुली को दबाते हैं, उदाहरण के लिए, [ए] आपको पॉपअप मिलेगा पत्र के एक प्रकार के रूपों को दिखा रहा है [ए] - उच्चारण, उम्लॉटेड-ए, इत्यादि। मुझे उपयोगकर्ता को अक्षरों के रूपों [डी] और [टी] में प्रवेश करने का एक तरीका देना है, जिसमें ऐप्पल ने अपने वर्चुअल पर शामिल नहीं किया कुंजीपटल। लेकिन उपयोगकर्ता को हमेशा ऐसा करने की आवश्यकता नहीं होगी - केवल लागू होने पर ही। – Tim

+0

@Tim, उस स्थिति में, आपको टचस्टार्ट, टचमॉव और टचचेंड पर जाल (यानी रोकथाम और रोकथाम रोकना) की आवश्यकता होगी। फिर आप तय करते हैं कि यह एक क्लिक है (यानी।टचस्टार्ट पर मूल स्पर्श करने के करीब है)। यदि यह एक क्लिक है, तो आप इसे समय दें (यानी touchend - touchstart पर समय)। यदि समय छोटा है, तो घटना को डीओएम के ऊपर सामान्य पर क्लिक करें। यदि समय लंबा है, तो अपनी विशेष चीज़ करें। –

+0

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

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