2015-11-25 2 views
0

В нашем приложении iOS у нас есть экран с UINavigationController, три UIBarButtonItem в rightBarButtonItems, представление содержимого UIView с подвью UITableView.Как настроить начальную ориентацию VoiceOver на UITableView

Каждый раз, когда приложение попадает на передний план, VoiceOver помещает начальный фокус на самый левый UIBarButtonItem. Мы хотели бы сосредоточиться либо на самой верхней ячейке в UITableView (начальном запуске), либо на ячейке, которую пользователь активно выбрал до того, как приложение переместилось на задний план.

Мы попытались вызвать UIAccessibilityPostNotification(), но это работает только в том случае, если мы добавим задержку, и это кажется очень хрупким и будет путать для пользователя, поскольку фокус начнется на UIBarButtonItem, а затем прыгнет.

ответ

0

Насколько я знаю, uiaccessibilitypostnotification хорошо работает с задержкой, хотя он хрупкий, вы можете вызвать метод с задержкой 0,5 секунды в представлении, который появился метод !!!!

Существует также другой способ, которым вы можете попробовать. Как только загрузится view, отключите доступность кнопок панели и установите доступность только для просмотра таблицы! Вам необходимо изменить массив accessibilityElements, и первым элементом в массиве должен быть table view, и установите isAccessibilityElemnt на NO, чтобы остальные элементы отключили доступность !!!!

+0

Мне нравится идея «отключить доступность кнопок панели» немного лучше. Хотя проблема возникает каждый раз, когда приложение входит на передний план, поэтому, я думаю, мне нужно прослушать это уведомление. –

0

dispatch_after (dispatch_time (DISPATCH_TIME_NOW, Int64 (0,75 * Двухместный (NSEC_PER_SEC))), dispatch_get_main_queue()) {() -> Пустота в UIAccessibilityPostNotification (UIAccessibilityScreenChangedNotification, self.view) }

Это может сработать ,

+0

Можете ли вы предложить больше объяснений для поддержки своего ответа? – bwegs

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