Swift में Accessibility: iOS ऐप्स को सभी के लिए सुलभ बनाना

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

Accessibility सिर्फ एक टिक नहीं, बल्कि आपके ऐप की सुपरपावर क्यों है

\n\n

कल्पना करें: आपने एक शानदार ऐप बनाया। सुंदर इंटरफ़ेस, तेज़ एनिमेशन, Swift में परफेक्ट कोड। आपको इस पर गर्व है। लेकिन अचानक पता चलता है कि 15% उपयोगकर्ता इसका उपयोग नहीं कर सकते। उनके लिए बटन बहुत छोटे हैं, टेक्स्ट बैकग्राउंड में घुल जाता है, और VoiceOver मेनू के बजाय बकवास "पढ़ता" है। परिचित लगता है?

\n\n

Accessibility (सुलभता) "अनिवार्यता" या "सिर्फ टिक के लिए करना" नहीं है। यह समावेशिता, देखभाल और, महत्वपूर्ण रूप से, व्यवसाय के बारे में है। iOS में एक शक्तिशाली फ्रेमवर्क है जो ऐप को दृष्टि, श्रवण, मोटर और संज्ञानात्मक विशेषताओं वाले लोगों की ज़रूरतों के अनुसार अनुकूलित करने की अनुमति देता है। और Swift हमें इसे सुरुचिपूर्ण ढंग से करने के लिए सभी उपकरण देता है।

\n\n

इस लेख में हम उबाऊ व्याख्यान नहीं पढ़ेंगे। हम विशिष्ट कोड उदाहरणों पर चर्चा करेंगे जिन्हें आप तुरंत प्रोजेक्ट में लागू कर सकते हैं। चलिए शुरू करते हैं!

\n\n

VoiceOver: ऐप को अपने बारे में बताना कैसे "सिखाएं"

\n\n

VoiceOver iOS में निर्मित एक स्क्रीन रीडर है। यह स्क्रीन पर होने वाली हर चीज़ को "बोलता" है: टेक्स्ट, बटन, जेस्चर। लेकिन अगर डेवलपर ने इंटरफ़ेस तैयार नहीं किया है, तो VoiceOver अराजकता में बदल सकता है। आइए इसे ठीक करें।

\n\n

बुनियादी सेटिंग: accessibilityLabel और accessibilityTraits

\n\n

VoiceOver की मदद करने का सबसे आसान तरीका तत्वों के लिए लेबल और प्रकार सेट करना है। उदाहरण के लिए, आपके पास दिल के आइकन वाला एक बटन है। लेबल के बिना, VoiceOver सिर्फ "बटन" कहेगा, लेबल के साथ यह "पसंदीदा में जोड़ें" कहेगा।

\n\n
let favoriteButton = UIButton(type: .system)\nfavoriteButton.setImage(UIImage(systemName: "heart"), for: .normal)\nfavoriteButton.accessibilityLabel = "पसंदीदा में जोड़ें"\nfavoriteButton.accessibilityTraits = .button
\n\n

accessibilityTraits पर ध्यान दें। यह VoiceOver के लिए एक संकेत है कि तत्व के साथ कैसे इंटरैक्ट करना है। बटन के लिए — .button, इमेज के लिए — .image, शीर्षक के लिए — .header। स्थिति को सटीक रूप से बताने के लिए .selected, .notEnabled और अन्य का उपयोग करें।

\n\n

तत्वों को समूहित करना: VoiceOver को उपयोगकर्ता को "बकबक" करने से कैसे रोकें

\n\n

कभी-कभी कई तत्वों को एक अर्थपूर्ण ब्लॉक में संयोजित करना तर्कसंगत होता है। उदाहरण के लिए, एक उत्पाद कार्ड: इमेज, नाम, मूल्य। यदि VoiceOver उन्हें अलग-अलग पढ़ता है, तो उपयोगकर्ता थक जाएगा। समाधान — UIAccessibilityElement या shouldGroupAccessibilityChildren है।

\n\n
cardView.shouldGroupAccessibilityChildren = true\ncardView.accessibilityLabel = "Nike Air स्नीकर्स, 12,990 रुपये"\ncardView.accessibilityTraits = .button
\n\n

अब VoiceOver पूरे कार्ड को एक तत्व के रूप में पढ़ेगा। संक्षिप्त, सारगर्भित, स्पष्ट।

\n\n

कस्टम क्रियाएँ: जब सिर्फ "टैप" से अधिक की आवश्यकता हो

\n\n

जटिल तत्व होते हैं: स्लाइडर, स्विच, स्वाइप सूची। उनके लिए कस्टम क्रियाएँ जोड़ना महत्वपूर्ण है। उदाहरण के लिए, "हटाएं" और "संपादित करें" फ़ंक्शन वाले सेल के लिए:

\n\n
let deleteAction = UIAccessibilityCustomAction(\n    name: "हटाएं",\n    target: self,\n    selector: #selector(deleteItem)\n)\nlet editAction = UIAccessibilityCustomAction(\n    name: "संपादित करें",\n    target: self,\n    selector: #selector(editItem)\n)\ncell.accessibilityCustomActions = [deleteAction, editAction]
\n\n

VoiceOver उपयोगकर्ता क्रिया चुनने के लिए नीचे या ऊपर स्वाइप करता है। यह अनुभव को काफी बेहतर बनाता है।

\n\n

Dynamic Type: टेक्स्ट जो हर किसी के अनुकूल हो

\n\n

कमजोर दृष्टि वाले लोग अक्सर iOS सेटिंग्स में फ़ॉन्ट आकार बढ़ाते हैं। यदि आपका ऐप Dynamic Type का समर्थन नहीं करता है, तो टेक्स्ट कट जाएगा, एक-दूसरे पर ओवरलैप हो जाएगा, या बस अपठनीय हो जाएगा। इससे कैसे बचें?

\n\n

डायनामिक फ़ॉन्ट शैलियों का उपयोग करें

\n\n

हार्डकोडेड UIFont.systemFont(ofSize: 16) के बजाय UIFont.preferredFont(forTextStyle: .body) का उपयोग करें।

\n\n
label.font = UIFont.preferredFont(forText

ब्लॉग

पुस्तक अनुशंसाएँ