2013-08-13 12 views
5

Basıldığında, bir "yardımcı" pencere gösteren bir düğme var.NSAccessibility zorlanıyor Odaklanmamış OS X metin alanı okumaya dikkat edin?

Bu pencere görünür ancak klavye odağı verilmez, orderFrontRegardless aracılığıyla.

Pencerede, içinde yardımcı metin bulunan bir NSTextView bulunur.

Görme engelli kullanıcılar için, OS X'in sesinin, görüntülendiğinde bu pencerenin metin görünümünün içeriğini hemen okumasını istiyorum. (

- (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]; 
} 

bildirim AXRole sorgulamak için neden: Sonra erişilebilirlik yöntemi geçersiz NSTextView benim alt sınıfında

NSAccessibilityPostNotification(textView, NSAccessibilityValueChangedNotification); 

: Ben VoiceOver yapmak çalışılıyor

yoluyla metni okuyun NSAccessibilityRoleAttribute) ve AXSharedCharacterRange (NSAccessibilitySharedCharacterRangeAttribute).

Karakter aralığı, metin alanının aralığını doğru olarak döndürür. Bununla birlikte, hiçbir noktada AXValue (NSAccessibilityValueAttribute) istenmemektedir. Bu, VoiceOver'ın metin alanını okuması istendiğinde beklemem gerektiğidir.

NSAccessibilityValueChangedNotification neden TextView'ın NSAccessibilityValueAttribute nu istemiyor? VoiceOver'ı metin alanının metnini nasıl okurum?

cevap

1

Odağı istenen NSTextView'a ayarlamadan yapmanın bir yolu olmadığına inanıyorum.

belki bu OSX uygulamasında uygulanabilecek iOS kullanan bir çözüm buldum

: ikinci argüman olarak bir UIAccessibilityLayoutChangedNotification veya UIAccessibilityScreenChangedNotification yayınlarken VoiceOver: force an accessibility element to be selected after a screen transition

iOS size bir erişilebilirlik elemanda geçebilir UIAccessibilityPostNotification ve VoiceOver, öğesinin üzerine odaklanacaktır. NSAccessibilityValueAttribute bir özellik hiç ise

Belki öğrenmek için orada içine NSLog denediniz NSAccessibilityPostNotification

0

Geçersiz Kıl

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

ile NSAccessibility çerçevesine benzer bir yaklaşım kullanabilir?