我试图获取信息,如果一个元素集中在画外音。所以我重写了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")
}
答案 0 :(得分:5)
它没有被调用,因为您的视图控制器不是可访问性元素。您应该在自定义视图子类中覆盖它。
只是为了澄清:当可访问性元素变得聚焦时,你不会得到那个回调,而是当它成为强制时,元素本身将获得该回调。
你可以覆盖它的原因(UIViewController实现它的原因)是它是一个非正式协议,一个在NSObject上实现的类,意味着每个NSObject都实现了这些方法。
答案 1 :(得分:0)
accessibilityElementDidBecomeFocused 没有调用,因为在要添加子视图的位置,该类 isAccessibilityElement 为false。如果要访问 accessibilityElementDidBecomeFocused 用于子视图。您可以创建自定义类并调用此函数。
您可以检查此链接以获取有关可访问性的更多详细信息:https://a11y-guidelines.orange.com/mobile_EN/dev-ios.html