VoiceOver Apple کا بلٹ ان اسکرین ریڈر ہے جو انٹرفیس کے ہر عنصر کو آواز دیتا ہے اور اشاروں کے ذریعے ڈیوائس کو کنٹرول کرنے کی اجازت دیتا ہے۔ یہ ٹیکنالوجی iOS، iPadOS اور macOS میں سسٹم لیول پر شامل ہے اور اضافی سافٹ ویئر انسٹالیشن کی ضرورت نہیں ہے۔ Apple Accessibility (2025) کے مطابق، VoiceOver 40 سے زیادہ زبانوں کو سپورٹ کرتا ہے اور دنیا بھر میں لاکھوں نابینا اور کم بینا صارفین استعمال کرتے ہیں۔
اہم نکات
VoiceOver ایک اسکرین ریڈر ہے جو Apple آپریٹنگ سسٹمز میں شامل ہے۔ یہ نابینا اور کم بینا صارفین کے لیے ڈیزائن کیا گیا ہے اور بصری رابطے کے بغیر ڈیوائس کے ساتھ مکمل تعامل فراہم کرتا ہے۔ VoiceOver انٹرفیس کے تمام عناصر کو آواز دیتا ہے: بٹن، لنکس، ٹیکسٹ، تصاویر، اطلاعات اور سسٹم عناصر۔
یہ ٹیکنالوجی پہلی بار 2005 میں macOS کے لیے متعارف کرائی گئی تھی، اور iOS پر 2009 میں iPhone 3GS کے ساتھ آئی۔ اس کے بعد سے، VoiceOver Apple کے ماحولیاتی نظام کا ایک لازمی حصہ اور پلیٹ فارم کی رسائی کے حق میں ایک اہم دلیل بن گیا ہے۔ VoiceOver سسٹم لیول پر شامل ہے — یعنی یہ ڈویلپر کی طرف سے اضافی انضمام کے بغیر کسی بھی ایپلیکیشن میں کام کرتا ہے، اگرچہ آواز کا معیار براہ راست اس بات پر منحصر ہے کہ ایپلیکیشن iOS رسائی API کو کتنی اچھی طرح استعمال کرتی ہے۔
VoiceOver قدرتی تقریر کی ترکیب کے ساتھ 40 سے زیادہ زبانوں کو سپورٹ کرتا ہے اور علاقائی آواز کی ترتیبات کے مطابق ڈھل جاتا ہے۔ iOS پر، VoiceOver اردو اور دیگر کئی زبانوں کے لیے Siri وائس انجن استعمال کرتا ہے، جو اوقاف اور سیاق و سباق کے لحاظ سے سب سے قدرتی آواز اور درست لہجہ کو یقینی بناتا ہے۔
VoiceOver ٹچ ایونٹس کو روکتا ہے اور انہیں معیاری iOS ان پٹ سے مختلف طریقے سے تشریح کرتا ہے۔ جب صارف اسکرین کو چھوتا ہے، VoiceOver انگلی کے نیچے والے عنصر کو فعال نہیں کرتا، بلکہ پہلے اسے آواز دیتا ہے۔ صرف ڈبل ٹیپ کے بعد عنصر فعال ہوتا ہے۔ یہ اہم فرق نابینا صارفین کو حادثاتی کلک کے خطرے کے بغیر انٹرفیس کو دریافت کرنے کی اجازت دیتا ہے۔
VoiceOver انٹرفیس عناصر کو منطقی ترتیب میں پڑھتا ہے: بائیں سے دائیں، اوپر سے نیچے۔ پڑھنے کی ترتیب iOS ویو درجہ بندی سے وراثت میں ملتی ہے، لیکن ڈویلپر پیچیدہ لے آؤٹ کے لیے accessibilityElements پراپرٹی کے ذریعے اسے تبدیل کر سکتا ہے۔ صارف دائیں سوائپ (اگلا) اور بائیں سوائپ (پچھلا) کر کے عناصر کے درمیان منتقل ہو سکتا ہے، نیز کسی مخصوص عنصر کو چھو کر اسے آواز دلا سکتا ہے۔
ہر حرکت کے ساتھ، VoiceOver عنصر کی قسم (بٹن، لنک، سرخی)، اس کا نام (accessibilityLabel)، حالت (منتخب، غیر فعال) اور اشارہ (accessibilityHint) بولتا ہے۔ اگر عنصر میں کوئی قدر ہے — مثال کے طور پر، والیوم سلائیڈر — VoiceOver اسے بھی آواز دیتا ہے۔ رسائی کی خصوصیات (UIAccessibilityTraits) صارف کو عنصر کے رویے کے بارے میں اضافی معلومات دیتی ہیں: کہ یہ بٹن ہے، سوئچ ہے، تلاش کا فیلڈ ہے یا کی بورڈ کی ہے۔
روٹر ایک ورچوئل ایڈجسٹمنٹ ڈائل ہے جو VoiceOver نیویگیشن موڈ کو تبدیل کرتا ہے۔ صارف دو انگلیوں سے روٹر گھماتا ہے (والیوم نوب کی طرح) اور ایک موڈ منتخب کرتا ہے: الفاظ، حروف، سرخیاں، لنکس، داخلے کے مقامات، جدول کی قطاریں اور دیگر۔ سرخیوں کا موڈ ویب صفحات اور ایپلیکیشنز میں H1-H6 کے درمیان تیزی سے سوئچ کرنے کی اجازت دیتا ہے، جبکہ حروف کا موڈ ٹیکسٹ کو حرف بہ حرف بولتا ہے، جو فارم بھرتے وقت یا توثیقی کوڈ داخل کرتے وقت مفید ہے۔
ڈویلپر UIAccessibilityCustomRotor API کے ذریعے روٹر میں حسب ضرورت موڈ شامل کر سکتا ہے۔ مثال کے طور پر، نوٹس ایپلیکیشن میں، “پسندیدہ نوٹس” یا “حالیہ تبدیلیاں” روٹر شامل کیا جا سکتا ہے۔ حسب ضرورت روٹرز مخصوص ایپلیکیشنز میں نیویگیشن کو نمایاں طور پر تیز کرتے ہیں اور iOS رسائی کے بہترین طریقہ کار سمجھے جاتے ہیں۔
VoiceOver اشاروں کا اپنا سیٹ استعمال کرتا ہے جو معیاری iOS اشاروں سے مماثل نہیں ہے۔ زیادہ تر اشارے ایک انگلی کی بجائے تین انگلیوں سے کیے جاتے ہیں — یہ معمول کے آپریشن کے ساتھ تصادم کو روکتا ہے اور VoiceOver کو معیاری ان پٹ کے ساتھ بیک وقت کام کرنے دیتا ہے۔
| عمل | اشارہ | نتیجہ |
|---|---|---|
| عنصر کو آواز دیں | 1 انگلی سے ٹیپ | عنصر کا نام بولتا ہے |
| فعال کریں | ڈبل ٹیپ | بٹن یا لنک دباتا ہے |
| اگلا عنصر | دائیں سوائپ | اگلے پر جائیں |
| پچھلا عنصر | بائیں سوائپ | پچھلے پر واپس جائیں |
| اسکرول | 3 انگلیوں سے سوائپ | فہرست یا صفحہ اسکرول کریں |
| روٹر | 2 انگلیوں سے گھمائیں | نیویگیشن موڈ تبدیل کریں |
ڈبل ٹیپ اشارہ VoiceOver میں عناصر کو فعال کرنے کا بنیادی طریقہ ہے۔ اگر کسی عنصر کو خاص عمل کی ضرورت ہو (مثال کے طور پر، گھسیٹنا)، VoiceOver حرکت کے موڈ میں داخل ہونے کے لیے “ٹیپ — ڈبل ٹیپ اور دبائے رکھیں” ترتیب استعمال کرتا ہے۔ یہ اسکرین کو دیکھے بغیر ڈریگ اینڈ ڈراپ جیسے پیچیدہ اشاروں کو انجام دینے کی اجازت دیتا ہے۔ VoiceOver عمل کو منسوخ کرنے کے لیے “دو انگلیوں سے ڈبل ٹیپ” اور اسکرین کرٹن (Screen Curtain) کو آن/آف کرنے کے لیے “ٹرپل ٹیپ” اشارہ بھی سپورٹ کرتا ہے۔
iOS ایپلیکیشن ڈویلپر UIAccessibility API کے ذریعے VoiceOver کے تعامل کو نمایاں طور پر بہتر بنا سکتا ہے۔ بنیادی رسائی کی ترتیبات Interface Builder (Identity Inspector → Accessibility) میں شامل کی جاتی ہیں، لیکن پیچیدہ انٹرفیس کے لیے کوڈ میں پروگرامیٹک ترتیب کی ضرورت ہوتی ہے۔
accessibilityLabel پراپرٹی وہ ٹیکسٹ سیٹ کرتی ہے جو VoiceOver عنصر کے لیے بولتا ہے۔ اگر لیبل سیٹ نہیں ہے، تو VoiceOver بٹن کا ٹیکسٹ یا ٹیکسٹ فیلڈ کا پلیس ہولڈر استعمال کرتا ہے۔ ٹیکسٹ کے بغیر عناصر (آئیکنز، حسب ضرورت ویوز) کے لیے لیبل لازمی ہے۔ accessibilityTraits پراپرٹی عنصر کی قسم متعین کرتی ہے: بٹن، سرخی، سوئچ، تلاش کا فیلڈ، کی بورڈ کی، قدر تبدیل ہوتی ہے، لنک اور دیگر۔
let profileButton = UIButton(type: .custom)
profileButton.setImage(UIImage(named: "avatar"), for: .normal)
profileButton.isAccessibilityElement = true
profileButton.accessibilityLabel = "صارف کا پروفائل"
profileButton.accessibilityTraits = .button
profileButton.accessibilityHint = "پروفائل کی ترتیبات کی اسکرین کھولتا ہے"
isAccessibilityElement فلیگ حسب ضرورت ویوز کے لیے VoiceOver سپورٹ کو فعال کرتا ہے — ڈیفالٹ طور پر یہ صرف معیاری عناصر (UIButton، UILabel، UITextField) کے لیے درست ہے۔ accessibilityHint پیرامیٹر ایک اشارہ شامل کرتا ہے: VoiceOver اسے توقف کے بعد بولتا ہے اگر صارف کسی عنصر پر رک جائے۔ اشارہ کو عمل کے نتیجے کی وضاحت کرنی چاہیے، ہدایت کی نہیں: “ترتیبات کی اسکرین کھولتا ہے” “کھولنے کے لیے دبائیں” کے بجائے۔
پیچیدہ اسکرینوں کے لیے جہاں عناصر کا منطقی گروپ بصری ترتیب سے مطابقت نہیں رکھتا، accessibilityElements استعمال کیا جاتا ہے — ایک ارے جو پڑھنے کی ترتیب سیٹ کرتا ہے۔ مثال کے طور پر، پروڈکٹ کارڈ میں ایک تصویر، نام، قیمت اور “کارٹ میں شامل کریں” بٹن ہوتا ہے۔ اگر یہ عناصر ویو درجہ بندی میں بے ترتیبی سے ترتیب دیے گئے ہیں، تو accessibilityElements VoiceOver کے لیے صحیح ترتیب قائم کرتا ہے۔
let productCard = UIView()
let productImage = UIImageView()
let productName = UILabel()
let productPrice = UILabel()
let addToCartButton = UIButton()
productCard.accessibilityElements = [
productImage, productName, productPrice, addToCartButton
]
متعدد عناصر کو ایک قابل رسائی عنصر میں یکجا کرنے کے لیے، UIAccessibilityContainer یا ٹچ ایریا کو اوور رائڈ کرنے کے لیے accessibilityFrame استعمال کیا جاتا ہے۔ یہ اس وقت مفید ہے جب ٹیبل سیل میں متعدد UI اجزاء ہوں لیکن منطقی طور پر ایک عنصر کی نمائندگی کریں — VoiceOver کو پورے سیل کو ایک ساتھ آواز دینی چاہیے، اس کے مواد کو انفرادی طور پر دہرانے کے بجائے۔
VoiceOver کے لیے درست رسائی کی ترتیب میں کئی پہلوؤں پر توجہ دینے کی ضرورت ہے: معنوی مارک اپ، متحرک اپ ڈیٹس، حسب ضرورت عناصر کا انتظام اور حقیقی اسکرین ریڈر کے ساتھ جانچ۔
SwiftUI میں، رسائی کو .accessibilityLabel()، .accessibilityValue()، .accessibilityHint() اور .accessibilityAddTraits() موڈیفائرز کے ذریعے ترتیب دیا جاتا ہے۔ SwiftUI خود بخود معیاری عناصر سے رسائی حاصل کرتا ہے، لیکن حسب ضرورت اجزاء کو واضح ترتیب کی ضرورت ہوتی ہے۔ مثال کے طور پر، ایک حسب ضرورت سلائیڈر کو VoiceOver کو اپنی قدر اور تبدیلی کی شکل بتانی چاہیے۔
Slider(value: $volume, in: 0...100)
.accessibilityLabel("آواز کی بلندی")
.accessibilityValue(
Text("\(Int(volume)) فیصد")
)
.accessibilityAddTraits(.adjustsAudioForAccessibility)
.accessibilityAdjustableAction { direction in
switch direction {
case .increment: volume = min(volume + 5, 100)
case .decrement: volume = max(volume - 5, 0)
}
}
accessibilityAdjustableAction موڈیفائر VoiceOver اشاروں سے قدریں تبدیل کرنے کی صلاحیت شامل کرتا ہے: اوپر سوائپ — بڑھائیں، نیچے سوائپ — گھٹائیں۔ اس موڈیفائر کے بغیر، سلائیڈر اسکرین ریڈر کے کنٹرول کے لیے ناقابل رسائی رہے گا۔ حسب ضرورت سٹیپرز، پکرز اور دیگر عناصر کے لیے جو اپنی قدر تبدیل کرتے ہیں، اسی طرح کی ترتیب درکار ہے۔
جب اسکرین پر مواد متحرک طور پر تبدیل ہوتا ہے (اطلاع آتی ہے، لوڈنگ کی حالت اپ ڈیٹ ہوتی ہے، قیمت تبدیل ہوتی ہے)، VoiceOver کو UIAccessibility.post کے ذریعے اطلاع ملنی چاہیے۔ اس کال کے بغیر، اسکرین ریڈر تبدیلیوں کے بارے میں نہیں جان پائے گا اور صارف اہم معلومات سے محروم ہو جائے گا۔ SwiftUI کے لیے، .accessibilityAnnouncement() موڈیفائر استعمال ہوتا ہے۔
UIAccessibility.post(
notification: .announcement,
argument: "قیمت میں 20 فیصد کمی کی گئی"
)
// SwiftUI
Text("قیمت اپ ڈیٹ کر دی گئی")
.accessibilityAnnouncement(Text("20% چھوٹ"))
VoiceOver اطلاعات کو سمجھداری سے استعمال کیا جانا چاہیے: ضرورت سے زیادہ اعلانات صارف کو پریشان کرتے ہیں، جبکہ ان کی عدم موجودگی ایپلیکیشن کو ناقابل رسائی بنا دیتی ہے۔ بہترین حکمت عملی صرف ان تبدیلیوں کا اعلان کرنا ہے جو صارف کے موجودہ کام کے بہاؤ کو متاثر کرتی ہیں: کارٹ اپ ڈیٹس، لوڈنگ کی حالت، فارم کی توثیق کی خرابی، چیٹ کی اطلاع۔ پس منظر کی تبدیلیاں (پینل پر وقت، شرح مبادلہ) اعلان کی ضرورت نہیں — صارف ضرورت پڑنے پر خود انہیں چیک کر لے گا۔
VoiceOver کی جانچ اسکرین ریڈر کو فعال کر کے فزیکل ڈیوائس یا Accessibility Inspector آپشن والے iOS سمیلیٹر کے ذریعے کی جاتی ہے۔ بصری کنٹرول کے بغیر مکمل استعمال کے منظرناموں کی جانچ کرنا ضروری ہے: رجسٹریشن مکمل کرنا، آرڈر دینا، تلاش کے ذریعے پروڈکٹ ڈھونڈنا۔ اگر بہاؤ بصری فیڈ بیک کے بغیر نیویگیبل ہے — تو VoiceOver صحیح طریقے سے ترتیب دیا گیا ہے۔
اکثر پوچھے گئے سوالات
سیٹنگز → رسائی → VoiceOver۔ سوئچ آن کریں۔ فوری فعال کرنے کے لیے، سائیڈ بٹن (iPhone X اور نئے) یا ہوم بٹن کو تین بار دبائیں۔ Siri بھی “VoiceOver آن کریں” کمانڈ سے VoiceOver کو فعال کر سکتا ہے۔
VoiceOver iOS کے لیے Apple کا اسکرین ریڈر ہے، TalkBack Android کے لیے Google کا اسکرین ریڈر ہے۔ کام کرنے کا اصول ایک ہی ہے: چھونے سے آواز آتی ہے، ڈبل ٹیپ فعال کرتا ہے۔ فرق اشاروں، روٹر کی ترتیبات اور ماحولیاتی نظام کے انضمام میں ہے: VoiceOver iCloud اور Apple Pay کے ساتھ زیادہ گہرائی سے مربوط ہے۔
UIAccessibility API استعمال کریں: تمام عناصر کے لیے accessibilityLabel، عنصر کی قسم کے لیے accessibilityTraits اور اشاروں کے لیے accessibilityHint سیٹ کریں۔ SwiftUI میں، .accessibilityLabel() اور .accessibilityAddTraits() موڈیفائر استعمال کریں۔ VoiceOver فعال کر کے ایپلیکیشن کی جانچ کریں۔
روٹر ایک نیویگیشن موڈ ہے جو دو انگلیاں گھما کر تبدیل کیا جاتا ہے۔ یہ طے کرتا ہے کہ عناصر کے درمیان کیسے جانا ہے: سرخیوں، حروف، الفاظ، لنکس یا داخلے کے مقامات کے ذریعے۔ ڈویلپرز UIAccessibilityCustomRotor کے ذریعے اپنے موڈ شامل کر سکتے ہیں۔
حسب ضرورت UIView کے لیے، isAccessibilityElement = true سیٹ کرنا اور accessibilityLabel فراہم کرنا ضروری ہے۔ اگر عنصر کئی چائلڈ ویوز پر مشتمل ہے، تو پڑھنے کی ترتیب سیٹ کرنے کے لیے accessibilityElements استعمال کریں یا انہیں ایک کنٹینر میں یکجا کریں۔
خلاصہ
ہم ایک موبائل ایپلیکیشن ٹرنکی تیار کریں گے
IT Sectr 2017 سے اسٹارٹ اپس اور کاروبار کے لیے iOS اور Android ایپلیکیشنز بناتا ہے۔ ہم آپ کو مشورہ دیں گے اور بہترین حل تجویز کریں گے۔
مزید پڑھیں