accessibilityElementDidBecomeFocused不要被调用

时间:2015-03-24 15:50:27

标签: ios iphone swift voiceover uiaccessibility

我试图获取信息,如果一个元素集中在画外音。所以我重写了accessibilityElementDidBecomeFocused方法,但从未调用过。我忘了什么吗?

override func viewDidLoad() {
    super.viewDidLoad()        
    viewArray.append(UIView())
    viewArray.append(UIView())        
    viewArray[0].frame = CGRectMake(20, 210, 100, 100)
    viewArray[0].isAccessibilityElement = true
    self.view.addSubview(viewArray[0])

    viewArray[1].frame = CGRectMake(220, 220, 100, 100)
    viewArray[1].isAccessibilityElement = true
    self.view.addSubview(viewArray[1])

}

//never called
override func accessibilityElementDidBecomeFocused(){
    println("accessibilityElementDidBecomeFocused")
}

2 个答案:

答案 0 :(得分:5)

它没有被调用,因为您的视图控制器不是可访问性元素。您应该在自定义视图子类中覆盖它。

只是为了澄清:当可访问性元素变得聚焦时,你不会得到那个回调,而是当成为强制时,元素本身将获得该回调。

你可以覆盖它的原因(UIViewController实现它的原因)是它是一个非正式协议,一个在NSObject上实现的类,意味着每个NSObject都实现了这些方法。

答案 1 :(得分:0)

accessibilityElementDidBecomeFocused 没有调用,因为在要添加子视图的位置,该类 isAccessibilityElement 为false。如果要访问 accessibilityElementDidBecomeFocused 用于子视图。您可以创建自定义类并调用此函数。

您可以检查此链接以获取有关可访问性的更多详细信息:https://a11y-guidelines.orange.com/mobile_EN/dev-ios.html