2013-07-28 42 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對象。

問題:

當我有一些延遲後調用代碼,一切正常。正確的accessibilityFrame看起來是這樣的:

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

當我調用-initWithFrame上面的代碼:我可達集裝箱觀點,-convertRect:toWindow:由2.將所有值框變小錯誤。錯誤的accessibilityFrame看起來是這樣的:

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

看來-convertRect:toWindow:方法,使得它無法正常工作-applicationDidFinishLaunching後調用太快時......是否有變通方法來安全地把它轉換成一個bug到正確的屏幕座標?

回答

1

您是否嘗試過使用UIAccessibilityConvertFrameToScreenCoordinates? 這是一個函數,它需要一個CGRect和一個UIView,並將該座標從UIView's座標空間轉換爲UIScreen座標。