代码之家  ›  专栏  ›  技术社区  ›  wjl

在启用VoiceOver的MKMapView上启动触摸屏

  •  0
  • wjl  · 技术社区  · 14 年前

    作为一个无障碍的练习和对自己的个人挑战,我决定写一个相对简单的应用程序。

    应用程序将显示 MKMapView 在美国,当你点击它的任何地方,它使用 MKReverseGeocoder 告诉你你监听的地点,州和国家。这很好,尽管我必须通过添加 WildcardGestureRecognizer MKMapView视图 . 这很适合 VoiceOver 关闭。

    当我转身 画外音 在地图上点击,上面写着“地图”。如果我双击它,它会发出轻微的咔哒声,这表明你已经激活了它。老实说,我对如何拦截这些事件不知所措。我知道一般的解决方法是在整个屏幕上方放置一个透明的视图并传递触摸,但这是否适用 画外音 ?

    作为记录 通配符识别器 我用的是在这里找到的: How to intercept touches events on a MKMapView or UIWebView objects?

    2 回复  |  直到 7 年前
        1
  •  2
  •   karen    13 年前

    问题是,当您打开VoiceOver时,触摸事件会被系统阻止。为了证明这一点,在touchesStarted函数中添加一个跟踪。在你打开画外音之前它应该可以正常工作。

    双击时听到的小咔哒声是VoiceOver ride手势。VoiceOver有自己的一组手势,但您可以通过双击按住来跳过VoiceOver的手势。

    例如,向下滑动不会在画外音打开的情况下滚动页面。但如果双击“保持”,等待咔哒声,然后向下轻扫,它将滚动。

        2
  •  2
  •   Boris DuÅ¡ek    11 年前

    iOS5.0增加了这个功能-只需设置 UIAccessibilityTraitAllowsDirectInteraction 景观特点:

    mapView.accessibilityTraits |= UIAccessibilityTraitAllowsDirectInteraction;
    

    (如果这不起作用,您可能需要将映射视图子类化并重写accessibilityTraits方法)

    对该元素的第一次触摸仍会发出“咔哒”声并宣布视图的名称等,但所有后续触摸都将是直接交互-即触摸事件将传递到地图视图。

    在苹果的一款iOS应用程序中使用的例子就是GarageBand——钢琴视图设置了这个特性,这样盲人就可以通过直接触摸键盘来弹奏键盘上的键。