にアクセシビリティ識別子は、開発者が自動テストのために使用することができるGUIオブジェクトのIDを生成しています。設定アクセシビリティ識別子プログラムUIBarButtonItem
UIBarButtonItem
はUIAccessibilityIdentification
を実装していません。しかし、アクセシビリティ識別子を割り当てることができる可能性はありますか?
にアクセシビリティ識別子は、開発者が自動テストのために使用することができるGUIオブジェクトのIDを生成しています。設定アクセシビリティ識別子プログラムUIBarButtonItem
UIBarButtonItem
はUIAccessibilityIdentification
を実装していません。しかし、アクセシビリティ識別子を割り当てることができる可能性はありますか?
あなたはUIBarButtonItem
をサブクラスとそのサブクラスでUIAccessibilityIdentification
プロトコルを実装することができ、のがBarButtonWithAccesibility
を言うことができます。 BarButtonWithAccesibility.h
で
:
@interface BarButtonWithAccesibility : UIBarButtonItem<UIAccessibilityIdentification>
@property(nonatomic, copy) NSString *accessibilityIdentifier NS_AVAILABLE_IOS(5_0);
accessibilityIdentifier
プロパティを定義して、このプロトコルに接着するためのみ(厳密)要件。あなたのビューコントローラで今すぐ
、のはviewDidLoad
に言わせて、あなたはUIToolbarを設定し、サブクラス化UIBarButtonItem追加することができます。
#import "BarButtonWithAccesibility.h"
- (void)viewDidLoad{
[super viewDidLoad];
UIToolbar *toolbar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, 320, 44)];
BarButtonWithAccesibility *myBarButton = [[BarButtonWithAccesibility alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(buttonPressed:)];
myBarButton.accessibilityIdentifier = @"I am a test button!";
toolbar.items = [[NSArray alloc] initWithObjects:myBarButton, nil];
[self.view addSubview:toolbar];
}
をそしてbuttonPressed:
以内に、あなたはaccessibilityIdentifier
へのアクセス権を持っていることを確認できます。
- (void)buttonPressed:(id)sender{
if ([sender isKindOfClass:[BarButtonWithAccesibility class]]) {
BarButtonWithAccesibility *theButton = (BarButtonWithAccesibility *)sender;
NSLog(@"My accesibility identifier is: %@", theButton.accessibilityIdentifier);
}
}
は、この情報がお役に立てば幸いです。
あなたはこのようにそれを行うことができますiOSの5のとおり:
UIBarButtonItem *btn = [[UIBarButtonItem alloc] init...;
btn.accessibilityLabel = @"Label";
アクセシビリティ識別子はラベルと同じですか? – Chris
あなたは何を意味するのか分かりませんが、試してみましょう:デフォルトでは無名です。自分で設定する必要があります。 –
uはアクセシビリティの代わりにタグを使用できますし、タグからオブジェクトを取得することもできます。 –
あなたがその内部で作成したUIToolbar
を持っている場合は、プログラム的に複数のUIBarButtonItem
を作成する場合、それはそのようにアクセスし、accessibilityLabel
同様などを設定することができます以下のこと: -
-(void)viewDidAppear:(BOOL)animated
{
UIBarButtonItem *infoButtonItem=[[UIBarButtonItem alloc]initWithTitle:@"info" style:UIBarButtonItemStyleBordered target:self action:@selector(infoButtonClicked)];
[self.customToolBar setItems:[NSArray arrayWithObject:infoButtonItem]];
//Here if you have muliple you can loop through it
UIView *view = (UIView*)[self.customToolBar.items objectAtIndex:0];
[view setAccessibilityLabel:NSLocalizedString(@"Test", @"")];
}
サブクラスUIBarButtonItem
は良い解決策です。あなたのニーズに応じて、しかし、それはあなたのUIBarButtonItem
は、カスタムイメージを使用すると仮定すると、単にあなたのUIBarButtonItem
のカスタムイメージにaccessibilityIdentifier
を割り当てるにはより多くの意味を行うことができます。
まさに私が必要なもの、感謝! – Chris
うれしい私は助けることができました! –
iOS 8が問題を修正したように見え、 'UIBarButtonItem'でも' accessibilityIdentifier'を使うことができるようになりました。 – fabb