озвучка ios для разделов UITableView

Есть ли способ избежать того, чтобы заголовки разделов UITableView говорили «заголовок» в режиме озвучивания после того, как текст в разделе прочитан? Я предоставляю пользовательские представления в viewForHeaderInSection: . Я попытался установить isAccessibilityElement в NO, а accessibilityTraits в UIAccessibilityTraitNone для пользовательского представления, которое я возвращаю в viewForHeaderInSection. Но я не могу подавить выноску «заголовок» в режиме озвучивания. Например, если я установлю метку в разделе «Даты», она будет прочитана как заголовок «Пауза дат».

Причина, по которой мне нужно это сделать, заключается в том, что некоторые разделы представляют собой просто настраиваемые сообщения с 0 строками, на самом деле они не являются заголовками. Я не хочу, чтобы они были строками в разделе.


person Kedar    schedule 21.05.2014    source источник
comment
Если некоторые из заголовков не являются заголовками, не объявляйте их заголовками. Почему они не должны быть внутри раздела. Вы можете иметь разделы без заголовков.   -  person dasdom    schedule 21.05.2014
comment
@dasdom - Не могли бы вы уточнить - не объявлять их заголовками? UIView, который я возвращаю в viewForSection, имеет только одно подпредставление UILabel с текстовыми датами. Но в озвучке это читается как заголовок Даты. Есть ли какой-то атрибут, который мне нужно установить.   -  person Kedar    schedule 21.05.2014
comment
Нет, я имею в виду сделать заголовки, которые на самом деле не являются строками заголовков, и поместить их в разделы без заголовка.   -  person dasdom    schedule 21.05.2014
comment
Я понимаю, что вы говорите, но у меня нет выбора, чтобы сделать их рядами, это потребует слишком много изменений. Я просто ищу способ подавить выноску заголовка   -  person Kedar    schedule 21.05.2014


Ответы (2)


Отвечая на мой вопрос, чтобы задокументировать решение, с которым я пошел. Использовал пользовательское представление, реализующее UIAccessibilityContainer, и возвращал его в viewForHeaderInSection. Реализованы три метода в протоколе, чтобы помечать только метку в представлении как элемент доступности. Это единственный способ заставить раздел не добавлять «заголовок» в конце озвучивания метки.

person Kedar    schedule 25.05.2014
comment
Можете ли вы поделиться кодом UIAccessibilityContainer, который вы использовали? - person Jan; 17.03.2015
comment
@Kedar: не могли бы вы предоставить код, который решил эту проблему, пожалуйста? К сожалению, я думаю, что ваше решение работает только в том случае, если у вас нет других заголовков разделов, которые нужно создавать, когда необходима прокрутка. Если это не так, я хотел бы знать, почему. ;о) - person XLE_22; 06.06.2019

Вы можете реализовать метод accessibilityElementDidBecomeFocused в своем пользовательском представлении, когда это представление стало сфокусированным, и отправить UIAccessibilityLayoutChangedNotification в VoiceOver и сфокусироваться на себе, а затем вернуть черты UIAccessibilityTraitNone.

- (void)accessibilityElementDidBecomeFocused {
       UIAccessibilityPostNotification(UIAccessibilityLayoutChangedNotification,   self);
}

- (UIAccessibilityTraits)accessibilityTraits {
    return UIAccessibilityTraitNone;
}
person 0x0    schedule 16.11.2017