我们正在为盲人开发iOS 7应用程序,该应用程序专为在走动时快速单手使用而设计 . 因此,此应用程序无需VoiceOver即可使用,但在通常打开VoiceOver的环境中使用 . 有一段时间,我们一直要求用户将主按钮的三击分配给VoiceOver On / Off切换,然后在他们进入/离开应用程序时使用它 . 然而,我们正试图避免这种情况,这导致我们发现一个或几个人正试图制作与VoiceOver共存并具有相同需求的“乐器接口” . 现在我们正在尝试使用UIAccessibilityTraitAllowsDirectInteraction,但它有一个小故障 .

(请注意,该应用是全屏的,如statusBarHidden = YES)

所以,我需要解决以下四个问题中的任何一个:

  • 当将手指拖动到屏幕顶部时,点击隐藏状态栏会导致VoiceOver找到状态栏,甚至不会通知我们的应用程序(#accessibilityElementDidLoseFocus:永远不会被调用) . 我们需要一种方法来防止这种情况发生,因为应用程序在那时确实失去了可访问性焦点(而且#touchesEnded:和#touchesCancelled:都没有被调用) .

  • 如果无法#1,那么应用程序需要接收该通知,以便知道何时使用UIAccessibilityScreenChangedNotification重置VoiceOver的焦点 .

  • 如果无法进行#2,则应用程序需要能够连续重置VoiceOver的焦点(在NSTimer上)而不会播放VoiceOver声音(并且每次声音播放时淡出应用程序自己的声音输出) .

  • 如果无法进行#3,则应用程序需要能够切换状态栏的方向,而无需VoiceOver在每个开关上说“纵向”,“反向纵向”(请注意,用户甚至不知道VoiceOver正在谈论状态栏!) .

PS:我知道我“不应该”解决问题#2#3#4:只是我生活在一个似乎没有解决问题#1的世界里 .