如何使CALayer可訪問?具體來說,我希望圖層能夠隨時更改其標籤,因爲它可以隨時更改。官方文檔的sample code並沒有真正考慮到這一點。CALayer的動態可訪問性標籤
回答
以下內容假定您有一個超級視圖,其圖層全部爲AccessableLayer
,但如果您有更復雜的佈局,則可以修改此方案以處理該方案。
爲了使CALayer
可訪問,您需要一個實現UIAccessibilityContainer
方法的父視圖。這是一個建議的方式來做到這一點。
首先,有每一層自己的UIAccessibilityElement
@interface AccessableLayer : CALayer
@property (nonatomic) UIAccessibilityElement *accessibilityElement;
@end
現在
在其實施,修改元素,只要稍有改變:
@implementation AccessableLayer
... self.accessibilityElement.accessibilityLabel = text;
@end
的AccessableLayer從未創建UIAccessibilityElement
,因爲構造要求一個UIAccessibilityContainer。因此,有超級視圖中創建並分配給它:
#pragma mark - accessibility
// The container itself is not accessible, so return NO
- (BOOL)isAccessibilityElement
{
return NO;
}
// The following methods are implementations of UIAccessibilityContainer protocol methods.
- (NSInteger)accessibilityElementCount
{
return [self.layer.sublayers count];
}
- (id)accessibilityElementAtIndex:(NSInteger)index
{
AccessableLayer *panel = [self.layer.sublayers objectAtIndex:index];
UIAccessibilityElement *element = panel.accessibilityElement;
if (element == nil) {
element = [[UIAccessibilityElement alloc] initWithAccessibilityContainer:self];
element.accessibilityFrame = [self convertRect:panel.frame toView:[UIApplication sharedApplication].keyWindow];
element.accessibilityTraits = UIAccessibilityTraitButton;
element.accessibilityHint = @"some hint";
element.accessibilityLabel = @"some text";
panel.accessibilityElement = element;
}
return element;
}
- (NSInteger)indexOfAccessibilityElement:(id)element
{
int numElements = [self accessibilityElementCount];
for (int i = 0; i < numElements; i++) {
if (element == [self accessibilityElementAtIndex:i]) {
return i;
}
}
return NSNotFound;
}
您已經定義了' - (ID) accessibilityElementAtIndex:(NSInteger)index'在這段代碼中兩次 – 2015-02-13 12:55:45
謝謝,@CarlosP,現在已經更正了。 – Skotch 2015-02-14 19:18:19
- 1. TinyMCE可訪問性:標籤
- 2. 訪問與標籤動態按鈕
- 3. 動態內容可訪問性問題
- 4. 訪問標籤的「爲」屬性
- 5. 如何動態添加標籤內的標籤,並點擊訪問它?
- 6. 高性能屬性訪問和可能的動態編譯
- 7. 訪問UIScrolView中的動態加載的標籤
- 8. SoapUI的屬性擴展可用於訪問TestCase標籤嗎?
- 9. 是否可以通過JavaScirpt訪問HTML標籤的onSubmit屬性?
- 10. 我如何訪問動態添加的html標籤?
- 11. 如何訪問動態標籤頁的值?
- 12. Flex可訪問性 - 讀出標籤/文本
- 13. 隱藏表單標籤會影響Web可訪問性嗎?
- 14. Kendo combobox中缺少表單標籤可訪問性錯誤
- 15. 標籤欄控制器不可訪問
- 16. 動畫CALayer的shadowPath屬性
- 17. ASP.Net MVC,動態屬性和EditorFor /標籤
- 18. UIImageView的CALayer的anchorPoint「訪問屬性的未知組件」錯誤
- 19. 動態標籤創建問題
- 20. 多個CALayer性能問題
- 21. 訪問父類動態創建屬性
- 22. 動態訪問對象屬性
- 23. Newtonsoft.Json - 動態對象屬性訪問
- 24. 無法訪問動態屬性
- 25. Django動態訪問相關屬性?
- 26. as3 - 動態訪問類屬性
- 27. 如何動態/後期訪問屬性?
- 28. 動態訪問功能對象屬性
- 29. 速度動態屬性訪問
- 30. 動態訪問母版頁屬性
有一個類似的帖子在這裏:http://stackoverflow.com/q/13254122/1804403但它明確拒絕UIAccessibilityContainer – Skotch 2013-05-07 21:19:13