我有一個遵循UIAccessibilityContainer非正式協議的UIControl子類:它返回NO給-isAccessibilityElement,在訪問器中傳遞正確的-accessibilityElementCount和元素。UIAccessoryElement,accessoryFrame和屏幕旋轉破壞
創建的每個表示可訪問區域的UIAccessibilityElement都已成功創建,並且該框架是我繪製的另一個CGRect的1:1映射。例如:
例如,我在繪製{94,99},{209,350}},並且UIAccessibilityElement上的-accessibilityFrame被設置爲相同的CGRect值。
但是,當處於橫向(或倒置縱向)方位時,幀(僅適用於輔助功能元素,繪圖仍可正常工作)旋轉不正確。相對於框架的左上角始終是主頁按鈕的左上角。
下面是從模擬器截圖:
正如你所看到的,它在橫向模式,並且框架是完全不可能不是它的規定。
下面的代碼驅動元素的創建:
CGRect localRect = someCGRectVariable;
CGRect globalRect = CGRectOffset(localRect, CGRectGetMinX(self.accessibilityFrame), CGRectGetMinY(self.accessibilityFrame));
UIAccessibilityElement *accElem = [[UIAccessibilityElement alloc]initWithAccessibilityContainer:self];
accElem.isAccessibilityElement = YES;
accElem.accessibilityFrame = globalRect;
accElem.accessibilityHint = [NSString stringWithFormat:NSLocalizedString(@"xyz %@", nil), someName];
accElem.accessibilityTraits = UIAccessibilityTraitButton;
accElem.accessibilityLabel = nameValue;
它看起來對我來說,旋轉搗毀,但我不能把我的手指上。值得注意的是,它在縱向模式下工作得很好。
嗯,這是一個很好的觀點。它指出,「屏幕座標中的可訪問元素的框架。」我一定是第一次完全錯過了這個。不幸的是,-convertRect:toWindow:[帶有一個無窗口,爲了得到屏幕矩形]似乎沒有修改它。 – 2011-01-05 14:07:07