2015-02-04 5 views
0

및 기본 SDK 8.0 배포 접근성 라벨, 값을 설정하고 세그먼트에 대한 힌트를 시도 7.1UISegmentedControl 접근성 힌트 엑스 코드 6.1

임. 나는 How do I set the accesibility label for a particular segment of a UISegmentedControl?

을 확인했으나 장치에서도 작동하지 않습니다. 레이블이나 이미지에 대한 설정에서 voiceover는 값 또는 힌트가 아닌 accessibilityLabel만을 나타냅니다.

값과 힌트를 어떻게들을 수 있습니까?

+0

iOS에서 의도 한 바를 벗어난 세그먼트 화 된 컨트롤을 사용하고있는 것처럼 들립니다. 문제가 아닌 시나리오를 좀 더 자세히 설명하면 대안을 제시 할 수 있습니다. – ChrisCM

답변

1

iOS는 사용자가 원하는 컨텍스트 내에서 사용자가 수행하도록 허용하지 않습니다. 분할 된 컨트롤의 경우 iOS는 맞춤 방식으로 작동합니다. UIAccessibilityContainer 프로토콜을 재정의하려고 시도하더라도, iOS 프레임 워크를 사용하면 얻으려는 동작이 무시됩니다. UIAccessibilityElement 및 UIAccessibilityContainer 프로토콜을 모두 무시하려고했습니다. 내게 닥쳐 온 것은 내 재정의 것이 었습니다.

- (NSString*)accessibilityHint { return @"This is my hint";} 

함수가 호출되었지만 여전히 힌트 값은 무시되었습니다. 알게되면 세그먼트는 그럴듯하게 읽혀집니다.

(label) The title for the segment 
(trait) button 
(hint) 1 of 2 

그런 다음 마지막 부분은 "# of #"입니다. 무슨 일이 일어나고 있는지는 프레임 워크가 사용자가 제공 한 힌트를 무시하고 힌트 대신 세그먼트 수와 세그먼트의 최대 수를 사용한다는 것입니다. 프로토콜을 성공적으로 오버라이드 할 수 있었고 여전히이 방식으로 작동했기 때문에 나는 당신이 붙어 있다고 믿습니다. 사용자 환경에 필요한 정보를 더 제공하면 대안을 제안하게되어 기쁩니다.

편집 : 이것은 인터페이스 빌더에서 접근성 장애가있는 경우에 한층 더 도움이됩니다. 편집 할 세그먼트 컨트롤을 선택하면 힌트와 레이블이 사라집니다. 이러한 유형의 컨트롤에 대해 이러한 문자열을 변경하려고하지는 않습니다. 대부분 백엔드에서는 오버라이드 될 수 없거나 오버라이드 될 수없는 사용자 정의 방식으로이 특정 유형의 UI 객체를 처리하기 때문일 가능성이 큽니다.

1

약간의 설명이 여기에 있습니다.

NSString *title = @”Rating”; 
title.accessibilityLabel = @”Sort by highest rated”; 
[segmentedControl insertedSegmentedWithTitle:title]; 

당신이 하지 수있는 것은 내게 힌트 overrider입니다 : 애플의 문서는 프로그래밍 방식의 시각적 인 상표와는 다른 접근성 레이블이 각 세그먼트를 설정할 수 있다는 점에서 올바른 것입니다. 그것은 시스템이 '1/4'또는 어떤 것으로 생성 된 것으로 보입니다. 그러나 내게 필요한 옵션 레이블을 향상시킴으로써 힌트의 필요성을 줄일 수 있습니다.