首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >选中时NSWebView覆盖VoiceOver

选中时NSWebView覆盖VoiceOver
EN

Stack Overflow用户
提问于 2013-05-30 13:15:48
回答 1查看 374关注 0票数 0

我有一个NSWebView,当我在Mac OS X上使用VoiceOver时,它将NSWebView选项声明为"HTML content“,这很可能会让最终用户感到困惑,因为我将它用于自定义控件,并且我已经正确地处理了NSWebView的所有其他可访问性方面。

如何覆盖VoiceOver为NSWebView发布的内容?我已经尝试了以下方法,但是没有任何区别:

代码语言:javascript
复制
[webView accessibilitySetOverrideValue:@"Map View" forAttribute:NSAccessibilityDescriptionAttribute];

我还尝试了NSAccessibilityRoleDescriptionAttributeNSAccessibilityTitleAttribute的属性。

EN

回答 1

Stack Overflow用户

发布于 2013-05-31 06:18:31

您可能需要在- (id)accessibilityAttributeValue:(NSString *)attribute方法中创建NSWebView的子类并覆盖NSAccessibilityRoleDescriptionAttribute

代码语言:javascript
复制
- (id)accessibilityAttributeValue:(NSString *)attribute
{
    id value = nil;

    if ( [attribute isEqualToString:NSAccessibilityRoleDescriptionAttribute] )
    {
        value = @"Map View";
    }
    // all your other ifs here
    else
    {
        value = [super accessibilityAttributeValue:attribute];
    }

    return value;
}

确保告诉NSAccessibility您所提供的内容(特别是NSAccessibilityRoleDescriptionAttribute部分):

代码语言:javascript
复制
- (NSArray *)accessibilityAttributeNames
{
    static NSMutableArray *attributes = nil;

    if ( attributes == nil )
    {
        attributes = [[super accessibilityAttributeNames] mutableCopy];

        NSArray *additionalAttributes = @[NSAccessibilityDescriptionAttribute, NSAccessibilityRoleAttribute, NSAccessibilityChildrenAttribute, NSAccessibilityTitleUIElementAttribute, NSAccessibilityRoleDescriptionAttribute];

        for ( NSString *attribute in additionalAttributes )
        {
            if ( ![attributes containsObject:attribute] )
            {
                [attributes addObject:attribute];
            }
        }
    }

    return attributes;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16828435

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档