Код: Выделить всё
func openFullAccess() {
guard let url = URL(string: UIApplication.openSettingsURLString) else { return }
if #available(iOS 18.0, *) {
let selector = sel_registerName("openURL:options:completionHandler:")
if let responder = currentResponder(selector) {
if let application = responder as? UIApplication {
application.open(url, options: [:], completionHandler: nil)
} else if let scene = responder as? UIScene {
scene.open(url, options: .init(), completionHandler: nil)
}
}
} else {
let selector = sel_registerName("openURL:")
if let responder = currentResponder(selector) {
_ = responder.perform(selector, with: url)
}
}
}
private func currentResponder(_ selector: Selector) -> UIResponder? {
var _responder: UIResponder? = self
while let responder = _responder, !responder.responds(to: selector) {
_responder = responder.next
}
return _responder
}
Я попробовал следующий подход, используя UIApplication.openSettingsURLString, но он не работает должным образом — он открывает только главное приложение «Настройки» вместо глубокой связи с конкретными настройками полного доступа моей клавиатуры:
Подробнее здесь: https://stackoverflow.com/questions/797 ... d-in-ios26
Мобильная версия