如何在导航栏中设置VoiceOver语言?

时间:2012-05-10 12:38:06

标签: ios accessibility

我正在编写一个iOS应用程序,它在多语言环境中运行。因此,程序可以使用与系统语言不同的语言操作。示例:我的手机以英文运行,程序以德语或法语运行。所有文本都以正确的语言显示。

现在我想,VoiceOver使用正确的语言说出文本,使用以下方法可以很好地工作:

- (void)setVoLanguage:(NSObject*)object
{
  if (prefLanguage == 0){
    [object setAccessibilityLanguage:@"de-DE"];
  } else {
    [object setAccessibilityLanguage:@"fr-FR"];
  }
}

我试图让VoiceOver使用以下方法之一以正确的语言说出导航控制器中的文本:

[self setVoLanguage:navController];
[self setVoLanguage:navController.title];
[self setVoLanguage:navController.navigationBar.topItem];
[self setVoLanguage:navController.navigationBar.backItem];
[self setVoLanguage:navController.navigationBar.topItem.title];
[self setVoLanguage:navController.navigationBar.backItem.title];
[self setVoLanguage:navController.navigationBar.topItem.titleView];
[self setVoLanguage:navController.navigationBar.backItem.titleView];

但结果是,导航栏中的德语或法语文本总是使用英语发音。

有人知道如何在导航栏中切换VoiceOver语言吗?

谢谢。


更新:这是一个解决方法,适用于我使用iOS 5.1.1:

- (NSString *)accessibilityLanguage {
    cnlAppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];

    if (appDelegate != nil) {
        if ([appDelegate prefLanguage] == 0) {
            return @"de-DE";
        } else {
            return @"fr-FR";
        }
    }
    return @""; // this line should never be reached
}

我的appDelegate对象是存储当前语言的对象。覆盖所有对象的accessibilityLanguage似乎可以解决问题。

我希望这对那里的人有用。

1 个答案:

答案 0 :(得分:0)

通过iOS开发人员库,它看起来像是navController和navController。你试过了吗?