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의에서 "onLanguages"자체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];
그리고 방법
- (void)onLanguages {
[self.languagePopupView showWithCallback:nil];
}
버튼 동작이 VoiceOver를 (일반 탭 사용)을 활성화 완벽없이 작동 : 단지 모달 UIView의를 통해 나타나는 팝업보기를 보여줍니다한다. 또한 OS X에서 접근성 검사기를 시뮬레이터와 함께 사용하면 작업이 잘 수행됩니다.
실제 장치 (9.3을 실행하는 iPhone 5에서 테스트)에서는 "onLanguages"메서드가 호출되지 않습니다. 액세스 가능성 레이블, 힌트 및 특성을 올바르게 읽었으므로 요소를 잘 집중시킬 수 있지만 두 번 살짝 두 번 누르면 "onLanguages"메서드가 예상대로 트리거되지 않습니다.
아이디어가 있으십니까?
이것은 훌륭했습니다. 나는 [self sendActionsForControlEvents : UIControlEventTouchUpInside]를 호출하기 위해 그것을 무시했다. 바로 작동했습니다. 정말 고마워! – AlexKoren