我有一个UIButton子类,ACTLanguageButton,它只是做一些自定义UI更改,以便我可以重用该样式 . 在子类中,我有以下与可访问性相关的代码:
- (BOOL)isAccessibilityElement {
return YES;
}
- (NSString *)accessibilityLabel {
NSLocale *locale = [NSLocale localeWithLocaleIdentifier:self.language];
NSString *displayLanguage = [locale displayNameForKey:NSLocaleIdentifier value:self.language];
return [NSString stringWithFormat:@"Language Preference: %@", displayLanguage];
}
- (NSString *)accessibilityHint {
return @"Opens the list of available languages for accessible services.";
}
- (UIAccessibilityTraits)accessibilityTraits {
return UIAccessibilityTraitButton;
}
在实例化的UIView中,它是ACTLanguage Button的超级视图:
self.languageButton = [[ACTLanguageButton alloc]initWithFrame:CGRectMake(self.frame.size.width - 120, 20, 120, 25)];
[self addSubview:self.languageButton];
[self.languageButton addTarget:self action:@selector(onLanguages) forControlEvents:UIControlEventTouchUpInside];
然后方法“onLanguages”本身只显示一个弹出视图,该视图在UIView上以模态方式出现:
- (void)onLanguages {
[self.languagePopupView showWithCallback:nil];
}
按钮动作完美无需启用VoiceOver(正常点击使用) . 此外,当我在OS X上使用模拟器上的辅助功能检查器时,操作也会很好地执行 .
在真实设备上(在运行9.3的iPhone 5上进行测试),“onLanguages”方法永远不会被调用 . 正确读取了可访问性标签,提示和特征,我可以很好地聚焦元素,但是双击不会按预期触发“onLanguages”方法 .
有任何想法吗?
1 回答
实现这一目标的简单方法是实现acccessibilityActivate()并从那里调用
onLanguages()
.