2014-10-14 17 views
6

Mam UITabBarItem tak:Ustawianie etykietę dostępności na UITabBarItem bez tytułu

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

Ale mając zero po tytule usuwa etykietę potrzebne do dostępności i testowania KIF. Alternatywą znalazłem to, aby ustawić tytuł i przenieść ją na ekran, ale to wydaje się hacky rozwiązanie:

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

Czy to możliwe, aby mieć UITabBarItem bez tytułu, ale wciąż mają etykietę dostępności?

EDIT, aby dodać pełny kod na pasku kart i kodu przycisku background:

- (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]; 
} 

Odpowiedz

10

W systemów iOS 8, można przypisać etykietę dostępności bezpośrednio do elementu paska zakładka:

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

Dla iOS7 i poniżej masz rację, że musisz coś zrobić, aby ukryć tekst. Można zmusić go poza ekranem jakbyś był ilustrowany:

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

Albo można zrobić kolor tekstu jasne:

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

Pamiętaj, cokolwiek rozwiązanie można natknąć się będą wykorzystywane przez osoby niedowidzące, aby nawigować aplikacja. Ponieważ przycisk tła nie nadaje się do użytku, należy go oznaczać jako:

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

To nie działa dla mnie. Wydaje się, że przycisk znajdujący się za UITabBarItem ma etykietę dostępności ustawioną na nazwę pliku (bez rozszerzenia), a nie ustawioną przeze mnie etykietę. Jest również nadal za UITabBarItem i jako taki nie może być wstawiony przez KIF. EDYCJA: Chyba powinienem wspomnieć o UITabBarItem ma obraz za nim. – jjj

+1

Hmm ... Wygląda na to, że accessibilityLabel działa w iOS8, ale nie w wersji iOS7. W jaki sposób wstawiasz obraz za elementem paska kart? Czy możesz dotknąć zakładki, używając nazwy pliku jako etykiety dostępności? –

+0

Dodałem pełny kod przycisku do oryginalnego wpisu. Jeśli spróbuję użyć etykiety nazwy pliku, otrzymam ten sam błąd, co przy próbie dodania etykiety do przycisku wewnątrz 'addCenterButtonWithImage':" Element dostępności z etykietą "nie jest dostępny. Może być zablokowany przez inne widoki. "Zauważ, że tego nie napisałem, ale próbuję zautomatyzować go za pomocą KIF i ucząc się w locie. – jjj

Powiązane problemy