iOS VoiceOver按钮没有调用目标方法

iOS VoiceOver按钮没有调用目标方法

问题描述:

我有一个UIButton子类,ACTLanguageButton实际上只是做了一些自定义UI更改,以便我可以重用该样式。在子类中,我有以下代码有关的辅助功能:iOS VoiceOver按钮没有调用目标方法

- (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; 
} 

而且在实例化,是ACTLanguage按钮的上海华UIView的:

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”方法。

任何想法?

实现这个工作的一个简单方法是实现acccessibilityActivate()并从那里调用onLanguages()

+0

这太棒了。我忽略它只是为了调用[self sendActionsForControlEvents:UIControlEventTouchUpInside];并立即开始工作。非常感谢! – AlexKoren