2009-10-26 33 views
27

Interface BuilderにいくつかのUIBarButtonItemオブジェクトがあります。アクセシビリティラベルやヒントを設定するオプションがありません。UIBarButtonItemのアクセシビリティ属性を設定する

どのようにこれらの属性を設定できますか?

+0

XCodeの5のストーリーボード上でこれを行う方法はありますか? – fatuhoku

答えて

-5

UIAccessibilityのAppleのドキュメントをご覧ください。

+0

はい、すでにドキュメントを読んでいます。私はIBやこれ以外のエレガントな方法でこれをやり遂げる方法があることを期待していました。私はkludgeソリューションを投稿しましたが、よりクリーンなアプローチのためにまだ開いています。 –

+0

申し訳ありませんが、この機能はまだIBに追加されていません。私はあなたがおそらくあなたが今のためにしようとしている最高のものだと思う。 –

15

さて、IBを使って他のUI要素にアクセシビリティ属性を設定することはできますが、Interface Builderでそれを行う方法はないようです。だから、私は、ツールバー上のタグを設定してから、私の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

1

アクセシビリティラベルを手動で設定しようとしても、UIBarButtonItemイメージでは機能しませんでした。ただし、タイトルを手動で設定すると、ラベルが機能します。しかし、画像の下にタイトルが表示されます。

私はUIButtonを作成し、それをUIBarButtonItemのカスタムビューとして使用しました。唯一の損失は、UIBarButtonItemが実行するイメージマスキングです。追加ボーナス:IBで設定可能なアクセシビリティ。

3

私は上記のコードは、1つの余分ラインでUIBarButtonItemsで動作するようになった:

[ビューsetIsAccessibilityElement:YES];

+0

これで問題は解決しました。親ビューにもこれをYESに設定すると、サブビューは無視されることに注意してください。 –

7

私はこれが古いと知っていますが、私はこれを必要としています。 iOSの5.0の時点で、あなたは簡単に行うことによってUIBarButtonItemのアクセシビリティラベルを設定することができます。

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

これ以上のハックを。

26

あなたは、「ユーザー定義のランタイム属性」を使用し、そこにアクセシビリティ情報を指定することができます。 Runtime attributes

+0

これは簡単な方法です。 – mishimay

+1

クイック訂正、ヒントのために 'keyPath'ではなく' accessibilityHint'を使うべきです – Sirens

17

ちょうどIBでaccessibilityLabelユーザー定義のランタイム属性を設定する実際には十分ではありません。 isAccessibilityElementもtrueに設定する必要があります。これにより、すべてのアクセシビリティ情報がIB内に保持されます。 IB Screenshot

+1

他の要素にマッチさせるには、タイプをローカライズされた文字列にする必要があります。 – OrangeDog

+0

アクセシビリティラベルをそのように設定できますか? – Andy

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

関連する問題