我看了有關輔助的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到正確的屏幕座標?