在iOS的设置应用程序中从另一个应用程序编程打开键盘的设置屏幕

我们怎样才能以编程方式直接进入下面提到的iOS设置应用程序的任何屏幕

键盘屏幕 在这里输入图像说明

UPDATE

正如其他用户指出,这个解决scheme不再适用于iOS10。 如果有人有一个想法如何使它在iOS10的工作,请让我们知道。

针对iOS的解决scheme<10:

要打开设置(你自己的应用程序),你可以使用UIApplicationOpenSettingsURLString常量:

 if let settingsURL = NSURL(string: UIApplicationOpenSettingsURLString) { UIApplication.sharedApplication().openURL(settingsURL) } 

这是在iOS 8中引入的,因此您可以在运行iOS8或更高版本的设备上使用它。 但是这只能打开你自己的应用程序的设置。 不是键盘设置。 如果您的应用程序没有自己的设置,则只会在主页面上打开“设置”应用程序。

在过去的日子里(在iOS 5.1之前),你可以打开设置url,直接进入设置应用程序的任何子页面。 苹果在iOS 5.1中删除了这个function。

然而,它似乎再次在iOS 8和9的工作。这是没有正式logging的苹果,但它似乎工作,但我不知道这是多么可靠。 它适用于我的iOS 9.1 iPhone,但不适用于模拟器。

所以,请谨慎操作,您可以尝试打开键盘设置:

 if let settingsURL = NSURL(string: "prefs:root=General&path=Keyboard") { UIApplication.sharedApplication().openURL(settingsURL) } 

或者走得更深:

 if let settingsURL = NSURL(string: "prefs:root=General&path=Keyboard/KEYBOARDS") { UIApplication.sharedApplication().openURL(settingsURL) } 

编辑:正如iHulk在评论中提到的,你可能需要添加prefs到你的项目的Info.plist文件中的URLscheme,使这个工作。

从iOS 10开始,应该使用“App-Prefs:root”而不是“prefs:root”。 请参阅下面的Objective C代码。 经过testing,代码工作正常,但苹果可能因此拒绝该应用程序。

  NSString *settingsUrl= @"App-Prefs:root=General&path=Keyboard"; if ([[UIApplication sharedApplication] respondsToSelector:@selector(openURL:options:completionHandler:)]) { [[UIApplication sharedApplication] openURL:[NSURL URLWithString:settingsUrl] options:@{} completionHandler:^(BOOL success) { NSLog(@"URL opened"); }]; } 

我从苹果的评论者那里得到的最新消息:您的应用程序托pipe扩展程序,但不符合应用程序扩展程序devise指南。

具体而言,您的应用将用户直接带到了键盘设置页面,而不是将用户带到您的应用的特定设置页面。 请确保您的应用程序仅将用户带到您的应用程序设置页面。

当我redirect到:prefs:root = General&path = Keyboard / KEYBOARDS