如果某个元素被画外音聚焦,我会尝试获取信息。所以我重写了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")
}

最佳答案

它没有被调用,因为您的视图控制器不是可访问性元素。您应该在自定义视图子类中重写它。
只是澄清一下:当一个可访问性元素成为焦点时,您不会得到那个回调,相反,当它成为强制时,元素本身会得到那个回调。
之所以可以重写它(UIViewController实现它的原因)是因为它是一个非正式协议,是在NSObject上实现的一个类别,这意味着每个NSObject都实现了这些方法。

关于ios - accessibilityElementDidBecomeFocused不要被调用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29237146/

10-10 20:46