2013-07-28 1 views
1

나는 접근성에 대한 WWDC 세션을 지켜 애플이 권장하는 방법을했다 :UIAccessibilityElement의 accessibilityFrame을 올바르게 설정하는 방법은 무엇입니까?

// Convert frame to window coordinates 
frame = [view convertRect:frame toView:[appDelegate window]]; 

// Convert frame to "screen" coordinates 
frame = [w convertRect:frame toWindow:nil]; 

DLog(@"accessibilityFrame = %@", NSStringFromCGRect(frame)); 

// Set accessibility frame 
element.accessibilityFrame = frame; 

내 접근성 컨테이너 개체가 뷰 컨트롤러의 -viewDidLoad에 생성됩니다. 그런 다음지도 이미지의 항목에 대한 UIAccessibilityElement 개체를 만듭니다.

문제 :

일부 지연 후 코드를 호출하면 모든 것이 정상입니다.

{{0, 184}, {44, 200}} 

내가 -initWithFrame에서 위의 코드를 호출

: 올바른 accessibilityFrame은 다음과 같습니다 내 접근성 컨테이너보기의, -convertRect는 : toWindow는 : 프레임이 작고 잘못되고 2. 모든 값을 나눕니다. 잘못된 accessibilityFrame은 다음과 같습니다

{{0, 220}, {22, 100}} 

그것은 보인다 -convertRect을 : toWindow : 방법은 -applicationDidFinishLaunching 후 너무 빨리 호출하면 ... 안전하게 변환 얻을 수있는 해결 방법은 그것이 제대로 작동하게하는 버그가 올바른 화면 좌표로?

답변

1

UIAccessibilityConvertFrameToScreenCoordinates을 사용해 보셨습니까? 이것은 CGRectUIView을 사용하고 UIView's 좌표 공간에서 UIScreen 좌표로 rect를 변환하는 함수입니다.

관련 문제