2016-07-20 7 views
8

आईफोन मौसम ऐप में, वॉयसओवर का उपयोग करते समय, मैंने देखा कि पहली बार एक सेक्शन में टैप करने से, यह अनुभाग की घोषणा करेगा।आईओएस में सेक्शन लेबल्स की घोषणा करने के लिए वॉयसओवर कैसे प्राप्त करें?

उदाहरण के लिए, आईओएस 9 में, किसी भी आइटम पर टैप करने से पहली बार मध्य स्ट्रिप आपके द्वारा टैप किए गए तत्व का वर्णन करने से पहले "प्रति घंटा पूर्वानुमान" की घोषणा करेगी। स्ट्रिप में किसी और चीज को टैप करने से "प्रति घंटा पूर्वानुमान" की घोषणा नहीं की जाएगी।

नीचे तालिका पर किसी भी चीज़ पर टैप करने से आपके द्वारा टैप किए गए तत्व का वर्णन जारी रखने से पहले "दैनिक पूर्वानुमान" की घोषणा की जाएगी। इस तालिका में किसी और चीज को टैप करने से "दैनिक पूर्वानुमान" के साथ उपसर्ग नहीं होगा।

क्या आपके ऐप के अनुभागों का नाम देने के लिए कोई आसान एपीआई है? या क्या आपको वॉइसओवर कर्सर को ट्रैक करके और अपने लेबल को गतिशील रूप से बदलकर मैन्युअल रूप से ऐसा करना है? (यह भी काम करता है? के बाद कुछ उपयोग किया जाता है आप accessibilityLabel बदल सकते हैं लेकिन इससे पहले कि इसे पढ़ा है?)

+0

आप, स्पर्श, जो भी पर UIView आप चाहते थे पता लगाने के मौसम आप कुछ की घोषणा की है इंगित करने के लिए एक बूलियन उपयोग करें, और आप क्या चाहते हैं की घोषणा करते हुए AVSpeechUtterance उपयोग करने के लिए एक UIGestureRecognizer इस्तेमाल कर सकते हैं। – Jonathan

+0

@thealienisreal मैं एक ही प्रश्न के साथ यहां आया था। क्या आपने कभी इसके साथ कोई भाग्य लिया है? – djibouti33

+0

@ djibouti33 कोई भाग्य नहीं। सामान्य पहुंच-योग्यता कार्यान्वयन पर बहुत सारे उत्तर, लेकिन कोई भी जो इस विशेष परिदृश्य को हल नहीं करता है। – thealienisreal

उत्तर

0

वहाँ अपने एप्लिकेशन का नाम वर्गों के लिए एक सरल एपीआई है?

ऐसा लगता है कि सबसे उपयुक्त संदर्भ Apple's Accessibility Programming Guide है।

और इसकी एपीआई, Apple's UIAccessibility Documentation

shouldGroupAccessibilityChildren संपत्ति सेट करना आपके लक्ष्य को पूरा करने का सबसे अच्छा तरीका है। लिंक API के रूप में वर्णन,

एक बूलियन मान यह बताते हैं कि योग्यता चाहिए समूह को एक साथ तत्वों है कि रिसीवर के बच्चे हैं, स्क्रीन पर अपनी स्थिति को की परवाह किए बिना। ऊर्ध्वाधर कॉलम में आइटम्स के मूल दृश्य पर इस प्रॉपर्टी का मान YES पर सेट करने से वॉयसओवर ऐप के समूह का सम्मान करने और उन्हें सही ढंग से नेविगेट करने का कारण बनता है।

ध्यान रखने योग्य बातें करने के लिए:

  1. लक्ष्य तत्व किसी आसान तरीका तत्व है? (आप isAccessibilityElement संपत्ति का उपयोग कर जांच कर सकते हैं, मानक UIKit नियंत्रण और दृश्य डिफ़ॉल्ट रूप से UIAccessibility प्रोटोकॉल लागू)
    • यदि हां, तो आप सिर्फ अपनी पहुंच का श्रेय
    • यदि नहीं, तो आप अपने मूल्य को बदलने की जरूरत निर्धारित करने की आवश्यकता , view.isAccessibilityElement = true
  2. accessibilityLabel संपत्ति तत्व
  3. accessibilityHint संपत्ति कार्रवाई एक तत्व से शुरू हो रहा वर्णन करता है की पहचान करता है
  4. आप सेट कर सकते पहुंच स्टोरीबोर्ड
  5. में जिम्मेदार बताते हैं या, आप पहुँच आपके विचार उपवर्ग के कार्यान्वयन में विशेषताओं का सेट कर सकते हैं
+0

'shouldGroupAccessibilityChildren' प्रॉपर्टी केवल उस आदेश को प्रभावित करती है जो वॉयसओवर कर्सर तत्वों को नेविगेट करता है, लेकिन यह बूलियन मान अनुभाग का नाम देने का कोई तरीका प्रदान नहीं करता है। आप तत्वों को लेबल करने के तरीके का वर्णन करते हैं, लेकिन मैं अनुभाग ऐप की तरह पहली बार अनुभाग के भीतर तत्व को घोषित करने से पहले किसी भी तत्व को टैप करते समय सेक्शन नाम की घोषणा करने का एक तरीका ढूंढ रहा हूं, जैसे कि मौसम ऐप करता है। – thealienisreal

+0

क्या आपने अपने युक्त दृश्य की 'isAccessibilityElement' प्रॉपर्टी' सत्य 'पर सेट की है? यदि आप ऐसा करते हैं और इसे बच्चों के तत्वों के साथ समूहित करते हैं, तो यह हल हो सकता है। –

+0

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

2

मुझे लगता है कि दो दृष्टिकोण हैं:

  1. UITableViewCell उपवर्गीकरण और अभिगम्यता लेबल को ओवरराइड करना। cellForRowAtIndexPath से सेल के आप कर सकते हैं setAccessibilityLabel:

    - (NSString *) accessibilityLabel 
    { 
        NSString* voiceOverString; 
        // append section title on voiceOverString and then the elements value 
        return voiceOverString; 
    } 
    
  2. Apple docs से यह लिंक देखें। उदाहरण मौसम ऐप के लिए ही है।

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