0

ボタン付きのツールバーと、タイトル付きのボックス付きの NSView があります。ウィンドウが開いてナレーションがオンになったら、タイトル付きのボックスにフォーカスを合わせたいと思います。おそらくアクセシビリティ階層が高いため、現在はツールバーボタンにあります。ボタンではなくボックスにフォーカスするにはどうすればよいですか?

ありがとう

4

1 に答える 1

0

解決策は、次のようにウィンドウのアクセシビリティ階層にアクセスすることでしたwindowDidLoad:

id windowElement =  NSAccessibilityUnignoredDescendant(self.window);
NSArray *windowElements = [windowElement accessibilityAttributeValue:NSAccessibilityChildrenAttribute];

その後、階層の最初にあるはずの要素がwindowElements配列で見つかるはずです。それを見つけたとしましょう。そのときのインデックスはfirstElIndex次のとおりです。

    NSMutableArray *mutArray = [NSMutableArray arrayWithArray:windowElements];
        id firstElement = [[mutArray objectAtIndex:firstElIndex] retain];

        [mutArray removeObject:firstElement];
        [mutArray insertObject:firstElement atIndex:0];

        [windowElement accessibilitySetOverrideValue:mutArray forAttribute:NSAccessibilityChildrenAttribute];
        [windowElement accessibilitySetOverrideValue:mutArray forAttribute:NSAccessibilityVisibleChildrenAttribute];
        [windowElement accessibilitySetOverrideValue:mutArray forAttribute:NSAccessibilitySelectedChildrenAttribute];
        [firstElement release];

最後にwindowElement、children 属性を新しい配列でオーバーライドします。ここで、フォーカスしたい要素が最初の場所になります。

これは非常に単純なケースの例です。しかし、これは行く方法です。

于 2012-10-15T14:38:06.870 に答える