2013-04-26 2 views
1

Я улучшаю accessibilty моего проекта iOS и использую UINavigationController. My UINavigationItem имеет две кнопки, слева - «Отмена».Доступность для UINavigationController и UINavigationItem

По умолчанию кнопки отмены выбираются при показе представления. Итак, первое, что слышит пользователь, это «Отмена».

То, что я действительно хочу, чтобы название следует выбирать и говорить, а кнопка отмены должна не быть выбран.

Вопросы:

  1. ли это, как это должно быть, и что может быть причиной этого?
  2. Неужели кто-то успешно не выбрал кнопку и вместо этого выбрал название?

Спасибо, Клас

ответ

2

От Apple's UIAccessibility Guide:

UIAccessibilityLayoutChangedNotification - Добавлено приложением, когда макет изменяется на экране, например, когда появляется элемент или исчезает. Это уведомление включает параметр, который является либо объектом NSString, о котором говорит VoiceOver, либо элементом доступности, к которому движется VoiceOver.

Так что вы можете сделать что-то вроде этого:

- (void)viewDidAppear:(BOOL)animated 
{ 
    [super viewDidAppear:animated]; 
    UIAccessibilityPostNotification(UIAccessibilityLayoutChangedNotification,title); 
} 

Вы должны заменить «заголовок» в приведенном выше коде с фактическим Accessibility элемент, который вы хотите выбрать и разговорного.

Вы также можете использовать UIAccessibilityScreenChanged вместо UIAccessibilityLayoutChanged«когда новый вид кажется, что включает в себя основную часть экрана».

+0

Спасибо, что ответили. Я пробовал именно это и даже обнулял выбранный бит левой бит: s бит. Не повезло. Это похоже на поведение по умолчанию, которое трудно изменить. – claxclinton

+0

Это поведение по умолчанию, но не сложно изменить. Я использую код, который я опубликовал, без проблем в подобных обстоятельствах (навигационный контроллер также). Не имеет значения, какова черта левой кнопки, уведомление вынуждает переключать фокус на элемент, который вы передаете в качестве аргумента). Я просто набрал «title» выше, но вы должны изменить это на правильный элемент в своем приложении. Например, это может быть «self.title» или что-то в этом роде. – user1459524

+0

Спасибо, user1459524! Все нормально. Немного любопытно, почему это нужно сделать уже в viewDidAppear. Но неважно. Что бы ни работало. Еще раз спасибо. – claxclinton

Смежные вопросы