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()