我有一个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"按预期的方法。
有什么想法吗?