iOS VoiceOver 按钮未调用目标方法
iOS VoiceOver Button not Calling Target Method
我有一个 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 按钮的父视图:
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 上使用带有模拟器的辅助功能检查器时,操作也执行得很好。
在真实设备上(在 iPhone 5 运行 9.3 上测试),永远不会调用 "onLanguages" 方法。可访问性标签、提示和特征被正确读取,我可以很好地聚焦元素,但双击不会按预期触发 "onLanguages" 方法。
有什么想法吗?
实现此功能的最简单方法是实施 acccessibilityActivate()
并从那里调用 onLanguages()
。
我有一个 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 按钮的父视图:
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 上使用带有模拟器的辅助功能检查器时,操作也执行得很好。
在真实设备上(在 iPhone 5 运行 9.3 上测试),永远不会调用 "onLanguages" 方法。可访问性标签、提示和特征被正确读取,我可以很好地聚焦元素,但双击不会按预期触发 "onLanguages" 方法。
有什么想法吗?
实现此功能的最简单方法是实施 acccessibilityActivate()
并从那里调用 onLanguages()
。