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 } [/code] Но этот код неэффективен. Я хочу перейти на страницу настроек приложения, чтобы получить доступ к полному доступу.