Стрелковое касание Началось с MKMapView с включенным VoiceOver - PullRequest
0 голосов
/ 19 ноября 2010

В качестве упражнения с доступностью и личным испытанием для себя я решил, что хотел бы написать относительно простое приложение.

Приложение будет показывать MKMapView Соединенных Штатов, и когда вы нажмете где-нибудь на нем, оно использует MKReverseGeocoder, чтобы показать вам населенный пункт, штат и страну, где вы нажали.Это прекрасно работает, хотя мне нужно перехватить сенсорные события, добавив WildcardGestureRecognizer к MKMapView.Это прекрасно работает при выключенном VoiceOver.

Когда я включаю VoiceOver и нажимаю на карту, появляется надпись «карта».Если я дважды коснусь, то издаст небольшой щелчок, который указывает на то, что вы его активировали.Честно говоря, я не знаю, как перехватить эти события.Я знаю, что общее решение состоит в том, чтобы поместить прозрачный вид поверх всего экрана и передать касания, но будет ли это работать с VoiceOver?

Для записи, используемое мной WildcardGestureRecognizer находится здесь: Как перехватить события касаний в объектах MKMapView или UIWebView?

Ответы [ 2 ]

2 голосов
/ 10 марта 2013

iOS 5.0 добавила эту возможность - просто установите черту UIAccessibilityTraitAllowsDirectInteraction в представлении:

mapView.accessibilityTraits |= UIAccessibilityTraitAllowsDirectInteraction;

(если это не работает, вместо этого вам может понадобиться создать подкласс карты и переопределить метод accessibilityTraits)

Первое прикосновение к этому элементу все равно издаст звук «щелчка» и объявит название вида и т. Д., Но все последующие прикосновения будут прямым взаимодействием - т.е. события прикосновения будут переданы в вид карты.

Примером такого использования в одном из приложений Apple для iOS является GarageBand - этот вид черты установлен на виде пианино, так что слепой человек может играть на клавишах клавиатуры пианино, непосредственно касаясь их.

2 голосов
/ 11 февраля 2011

Проблема в том, что при включении VoiceOver сенсорные события блокируются системой. Чтобы доказать это, добавьте след в вашу функцию touchsBegan. Он должен срабатывать нормально, пока вы не включите VoiceOver.

Небольшой щелкающий звук, который вы слышите при двойном касании, является жестом перегрузки VoiceOver. VoiceOver имеет свой собственный набор жестов, но вы можете переключать жесты VoiceOver с помощью двойного нажатия.

Например, пролистывание вниз не приводит к прокрутке страницы с включенным VoiceOver. Но если вы дважды нажмете, подождите, пока не прозвучит щелчок, а затем проведите пальцем вниз, он прокрутится.

...