Мне нужно знать, какой элемент в данный момент фокусируется с помощью механизма фокусировки доступности. В простом случае, допустим, у меня есть клетка с парой ярлыков. Мне нужно знать (т.е. печатать на консоли или делать другие вещи), какой объект в данный момент находится в фокусе. Это то же самое, если бы у меня было мнение с большим количеством подпредставлений, различного типа. Я думаю, что я должен использовать elementFocusedNotification, и, как сказано в документации, используйте ключ UIAccessibilityElementFocusedKeyElement
. Я думаю, что я должен передать объект в методе, но как?
среди прочих я посмотрел здесь , здесь и здесь для получения информации, но не могу найти решения, чтобы узнать, какой элемент в данный момент сфокусирован.
в моей ячейкеForPowAt indexPath:
в ячейке:
override func accessibilityElementDidBecomeFocused() {
NotificationCenter.default.post(
name: NSNotification.Name(rawValue: UIAccessibility.elementFocusedNotification.rawValue),
object: self.subviews.first(where: {$0.isFocused}),
userInfo: ["UIAccessibilityElementFocusedKeyElement": "hello there"]
)
}
в представлении контроллераDidLoad:
NotificationCenter.default.addObserver(
self,
selector: #selector(self.doSomething(_:)),
name: NSNotification.Name(rawValue: UIAccessibility.elementFocusedNotification.rawValue),
object: nil
)
в том же контроллере
@objc func catchNotification(_ notification: Notification) {
//print("subscribed, notification: \(notification)")
if let myNotification1 = notification.userInfo?["UIAccessibilityElementFocusedKeyElement"] {
print("+++", myNotification1)
}
}