2014-10-14 6 views
6

Einstellung habe ich eine UITabBarItem wie so:ein Zugänglichkeit Etiketts auf einem UITabBarItem ohne Titel

_Controller.tabBarItem = [[UITabBarItem alloc] initWithTitle:nil image:nil tag:0]; 

Aber für einen Titel Null unter dem Etikett für die Zugänglichkeit und KIF Tests erforderlich entfernt. Eine Alternative, die ich gefunden ist, den Titel zu setzen und sie aus dem Bildschirm bewegen, aber das scheint wie eine hacky Lösung:

_Controller.tabBarItem.title = @"Foo"; 
_Controller.tabBarItem.titlePositionAdjustment = UIOffsetMake(0, 200); 

Ist es möglich, eine UITabBarItem ohne einen Titel zu haben, aber immer noch eine Zugänglichkeit Label?

EDIT vollständigen Code für Tab-Leiste und Hintergrund Schaltfläche Code hinzufügen:

- (void) loadViewController { 
    _Controller = [[UIViewController alloc] init]; 
    UIImage *normalImage = [UIImage imageNamed:@"bar.png"]; 
    UIImage *selectedTabImage = [UIImage imageNamed:@"barHover.png"]; 
    [self addCenterButtonWithImage:normalImage 
        highlightImage:selectedTabImage]; 

    _Controller.tabBarItem = [[UITabBarItem alloc] initWithTitle:nil image:nil tag:0]; 
} 

// Create a custom UIButton and add it to the center of our tab bar 
-(void) addCenterButtonWithImage:(UIImage*)buttonImage highlightImage:(UIImage*)highlightImage 
{ 
    UIButton* button = [UIButton buttonWithType:UIButtonTypeCustom]; 
    button.frame = CGRectMake(0.0, 0.0, buttonImage.size.width, buttonImage.size.height); 
    [button setBackgroundImage:buttonImage forState:UIControlStateNormal]; 
    [button setBackgroundImage:highlightImage forState:UIControlStateHighlighted]; 
    [button addTarget:self action:@selector(openCamera) forControlEvents:UIControlEventTouchUpInside]; 

    button.center = CGPointMake(self.tabBar.frame.size.width/2.0, self.tabBar.frame.size.height/2.0 - 6.0); 

    [self.tabBar addSubview:button]; 
} 

Antwort

10

In iOS8 können Sie eine Zugänglichkeit Label direkt auf eine Tab-Leiste Position zuordnen:

_Controller.tabBarItem = [[UITabBarItem alloc] initWithTitle:nil image:nil tag:0]; 
_Controller.tabBarItem.accessibilityLabel = @"Foo"; 

Für iOS7 und Unten haben Sie Recht, dass Sie etwas tun müssen, um den Text zu verbergen. Sie können ihn zwingen, außerhalb des Bildschirms, wie Sie dargestellt hatte:

_Controller.tabBarItem = [[UITabBarItem alloc] initWithTitle:@"Foo" image:nil tag:0]; 
_Controller.tabBarItem.titlePositionAdjustment = UIOffsetMake(0, 200); 

Oder Sie können die Textfarbe klar machen:

_Controller.tabBarItem = [[UITabBarItem alloc] initWithTitle:@"Foo" image:nil tag:0]; 
[_Controller.tabBarItem setTitleTextAttributes:@{NSForegroundColorAttributeName:[UIColor clearColor]} forState:UIControlStateNormal]; 

Denken Sie daran, was Lösung, die Sie kommen von Sehbehinderten verwendet werden Sie navigieren App Da Ihr Hintergrundknopf eine unbrauchbare Dekoration ist, sollten Sie sie als solche kennzeichnen:

button.isAccessibilityElement = NO; 
button.userInteractionEnabled = NO; 
+1

Dies funktioniert nicht für mich. Dies scheint dazu zu führen, dass die Schaltfläche hinter dem UITabBarItem eine Accessibility-Bezeichnung hat, die auf den Dateinamen (ohne die Erweiterung) und nicht auf die von mir festgelegte Bezeichnung eingestellt ist. Es ist auch immer noch hinter dem UITabBarItem und daher nicht von KIF tappable. EDIT: Ich denke, ich hätte erwähnen sollen, dass das UITabBarItem ein Bild dahinter hat. – jjj

+1

Hmm ... Es sieht aus wie accessibilityLabel funktioniert in iOS8, aber nicht iOS7. Wie fügen Sie das Bild hinter den Tab-Balken ein? Können Sie auf die Registerkarte tippen, indem Sie den Dateinamen als Zugänglichkeitsbezeichnung verwenden? –

+0

Ich habe den vollständigen Code für die Schaltfläche zum ursprünglichen Beitrag hinzugefügt. Wenn ich versuche, das Dateinamen-Label zu verwenden, bekomme ich den gleichen Fehler wie beim Hinzufügen des Labels zum Button im 'addCenterButtonWithImage':' Accessibility-Element mit Label "bar" kann nicht angetippt werden. Es kann durch andere Ansichten blockiert werden. Beachten Sie, dass ich dies nicht geschrieben habe, aber ich versuche, es mit KIF zu automatisieren und im laufenden Betrieb zu lernen. – jjj

Verwandte Themen