2013-08-13 5 views
5

मेरे पास एक बटन है, जो दबाए जाने पर, "सहायक" विंडो दिखाता है।फोर्स एनएसएसेबिलिटी वॉयसओवर फोकस ओएस एक्स टेक्स्टफील्ड पढ़ने के लिए?

यह विंडो दिखाया गया है, लेकिन orderFrontRegardless के माध्यम से कीबोर्ड फोकस नहीं दिया गया है।

विंडो में NSTextView के अंदर सहायक टेक्स्ट है।

दृष्टिहीन उपयोगकर्ताओं के लिए, मैं ओएस एक्स के वॉइसओवर को इस विंडो के टेक्स्ट व्यू को तत्काल पढ़ने के लिए तुरंत दिखाना चाहता हूं। NSTextView की मेरी उपवर्ग में

NSAccessibilityPostNotification(textView, NSAccessibilityValueChangedNotification); 

मैं तो पहुँच विधि ओवरराइड:

मैं योग्यता के प्रयास कर रहा हूँ के माध्यम से पाठ पढ़

- (id)accessibilityAttributeValue:(NSString *)attribute 
{ 
    //The notification calls this method for attributes: 
    //AXRole: returns AXTextArea 
    //AXSharedCharacterRange: returns range of the text view 

    return [super accessibilityAttributeValue:attribute]; 
} 

अधिसूचना AXRole के लिए क्वेरी करने के लिए यह कारण बनता है (NSAccessibilityRoleAttribute) और AXSharedCharacterRange (NSAccessibilitySharedCharacterRangeAttribute)।

चरित्र श्रृंखला टेक्स्ट क्षेत्र की सीमा को सही ढंग से लौटाती है।

हालांकि, किसी भी समय AXValue (NSAccessibilityValueAttribute) अनुरोध नहीं किया गया है। यही है कि मुझे वॉयसओवर को टेक्स्टफील्ड पढ़ने के लिए जरूरी होने की उम्मीद है।

NSAccessibilityValueChangedNotification टेक्स्ट व्यू के NSAccessibilityValueAttribute का अनुरोध क्यों नहीं कर रहा है? मैं वॉयसओवर को टेक्स्ट एरिया के टेक्स्ट को कैसे पढ़ूं?

उत्तर

1

मेरा मानना ​​है कि वांछित NSTextView पर ध्यान केंद्रित किए बिना आप ऐसा नहीं कर सकते हैं।

मुझे लगता है कि शायद यह OSX आवेदन में लागू किया जा सकता एक समाधान iOS का उपयोग कर पाया है: VoiceOver: force an accessibility element to be selected after a screen transition

आईओएस में आप किसी आसान तरीका तत्व में पारित कर सकते हैं जब से पीछे तर्क के रूप में एक UIAccessibilityLayoutChangedNotification या UIAccessibilityScreenChangedNotification पोस्टिंग UIAccessibilityPostNotification और वॉयसओवर उस तत्व पर ध्यान केंद्रित करेगा।

हो सकता है कि आप के साथ NSAccessibilityPostNotification

0

अवहेलना

-(NSArray *)accessibilityAttributeNames 
{ 
    NSMutableArray *attributeNames = [[super accessibilityAttributeNames] mutableCopy]; 
    [attributeNames addObject:NSAccessibilityValueAttribute]; 
    return attributeNames; 
} 

NSAccessibility ढांचे के साथ एक समान दृष्टिकोण का उपयोग तुम वहाँ में NSLog की कोशिश की है सकते हैं जानने के लिए कि NSAccessibilityValueAttribute एक विशेषता बिल्कुल है?