简体   繁体   中英

How to react to a “touch up inside” event in UIAccessibilityElement subclass?

I have a map with drawn items. The map handles touch events and determines the touched items as if they were buttons.

I made the map a container and implemented the methods to return accessibleElements. For each item I create one instance of a UIAccessibilityElement subclass.

It seems UIAccessibilityAction protocol has no callback for a "tap" or "button pressed" event. How would I mimic the effect of a UIButton with UIAccessibilityElement then?

Assuming you are running under iOS 5 or iOS 6, consider the following workaround. It is not optimal, but will work until there is a better way:

  1. Create a dummy view that is not, itself, an accessibility element.
  2. On this view, implement your "tap" handling in -touchesEnded:withEvent: .
  3. Set your accessibility element's accessibilityActivationPoint to a value that falls within this dummy view.

Your dummy view will receive touch events when the corresponding accessibility element is activated. Make sure to ignore touch handling in your dummy view if VoiceOver and other assistive technologies are not running.

EDIT: Another less hacky approach is to implement a tap gesture recognizer on the view you're concerned with, convert the coordinate from -touchesEnded:withEvent: to screen coordinates, and manually hit test the point against the frames of your accessibility elements.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM