2009-10-26 148 views
27

我在Interface Builder中有幾個UIBarButtonItem對象,並且找不到任何選項來設置這些按鈕的輔助功能標籤或提示。設置UIBarButtonItem的可訪問性屬性

我該如何設置這些屬性?

+0

有Xcode中5一個Storyboard這樣做的呢? – fatuhoku 2014-03-10 23:26:46

回答

-5

查看關於UIAccessibility的Apple文檔。

+0

是的,我已經閱讀了文檔。我希望有一種方法可以在IB或其他優雅的方式下做到這一點。我發佈了我的kludge解決方案,但我仍然打開一個更清潔的方法。 – 2009-10-27 02:22:26

+0

對不起,此功能尚未添加到IB。我認爲你的kludge可能是你現在要做的最好的。 – 2009-10-28 11:48:11

15

好的,所以看起來在Interface Builder中沒有辦法做到這一點,即使您可以使用IB在其他UI元素上設置輔助功能屬性。所以,我把我的工具欄上的一個標記,然後將此代碼添加到我的viewWillAppear中的方法:

UIToolbar *bottombar = (UIToolbar*)[self viewWithTag:kBottomToolbar]; 

UIView *view = (UIView*)[bottombar.items objectAtIndex:0]; 
[view setAccessibilityLabel:NSLocalizedString(@"Add Bookmark", @"")]; 
[view setAccessibilityHint:NSLocalizedString(@"Add Bookmark", @"")]; 

等每個按鈕項...

不是最優雅,但它的工作原理。

+2

從iOS 5.0開始,您可以直接在'UIBarButtonItem'上設置accessibilityLabel屬性。 – rmaddy 2013-03-11 03:39:03

1

嘗試手動設置輔助功能標籤對於UIBarButtonItem圖像無效。但是,如果我手動設置標題,則標籤將起作用。但它顯示圖像下方的標題。

我最終創建了一個UIButton並將它用作UIBarButtonItem的自定義視圖。唯一的損失就是UIBarButtonItem執行的圖像蒙版。額外的獎勵:在IB中可配置的可訪問性。

3

我得到上面的代碼與UIBarButtonItems工作與一個額外的行:

[視圖setIsAccessibilityElement:YES];

+0

這解決了這個問題。請記住,如果父視圖也將此設置設置爲YES,則子視圖將被忽略。 – 2013-03-13 19:11:05

7

我知道這是舊的,但我已經遇到了這個需求。由於安裝iOS 5.0的,你現在可以輕鬆地通過做設置UIBarButtonItem的無障礙標籤:

UIBarButtonItem *btn = [[UIBarButtonItem alloc] init...; 
btn.accessibilityLabel = @"Label"; 

沒有更多的黑客。

26

您可以使用「用戶定義的屬性運行」,並有指定的無障礙信息: Runtime attributes

+0

這是一個簡單的方法。 – mishimay 2014-05-08 09:11:43

+1

快速更正,提示您應該使用'accessibilityHint',而不是'keyPath' – Sirens 2017-11-25 06:54:36

17

它實際上不是不夠的,只是在設定的IB用戶accessibilityLabel定義運行屬性。您還必須將isAccessibilityElement也設置爲true。這保留了IB內的所有可訪問性信息。 IB Screenshot

+1

要匹配其他元素,類型應該是Localized String。 – OrangeDog 2015-02-17 09:34:40

+0

你可以用這種方式翻譯accessibilityLabel集嗎? – Andy 2015-08-26 06:58:12

3

你可以使用IBInspectable這樣你可以在Interface Builder的側面板上得到一些方便的選項。

public extension UIBarButtonItem { 
    @IBInspectable var accessibilityEnabled: Bool { 
    get { 
     return isAccessibilityElement 
    } 
    set { 
     isAccessibilityElement = newValue 
    } 
    } 

    @IBInspectable var accessibilityLabelText: String? { 
    get { 
     return accessibilityLabel 
    } 
    set { 
     accessibilityLabel = newValue 
    } 
    } 
} 

UIBarButton Accessibility options in Interface Builder

https://gist.github.com/KaneCheshire/dcce5246c3399072a5200189bfc53fe2