开发者

iOS change accessibility focus

Is there a way to set the accessibility focus programatically (App Store safe)? Any help will be greatly 开发者_开发问答appreciated.


To focus on element you can call.

Swift:

UIAccessibility.post(notification: .screenChanged, argument: self.myFirstView)

ObjC:

UIAccessibilityPostNotification(UIAccessibilityScreenChangedNotification, self.myFirstView);

Otherwise for iOS 8+ use the accessibilityElements to set element order and it will focus automatically on first element in the list

self.accessibilityElements = @[myFirstView, mySecondButton, myThirdLabel]


extension UIAccessibility {
    static func setFocusTo(_ object: Any?) {
        if UIAccessibility.isVoiceOverRunning {
            DispatchQueue.main.asyncAfter(deadline: .now() + 0.8) {
                UIAccessibility.post(notification: .layoutChanged, argument: object)
            }
        }
    }
}

Add this extension and call it by passing in the view you would like to be focused. If you would like to change focus when navigating using a tabbar, you can call this from viewWillAppear. This code wont work in any init method without a the delay of 0.7 or more.


This is the Swift code:

UIAccessibility.post(notification: .screenChanged, argument: <theView>)

Example usage

let titleLabel = UILabel()

override func viewDidAppear(_ animated: Bool) {
        super.viewDidAppear(animated)
        UIAccessibility.post(notification: .screenChanged, argument: titleLabel)
}


UIAccessibility.post(notification: .layoutChanged, argument: toast)
toast.becomeFirstResponder()
toast.isAccessibilityElement = true
toast.accessibilityTraits = .staticText //Traits option ie .header, .button etc
toast.accessibilityLabel = "Accessibility label to be read by VoiceOver goes here"

WHERE:

  • toast is my UIView (a pop up which gets triggered upon particular scenario)
  • above code needs to be added to the toast View
  • this code will automatically change focus to pop up view (toast) and VoiceOver will read accessibilityLabel
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜