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

iHu*_*ulk 8 ios ios-keyboard-extension

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

键盘屏幕 在此输入图像描述

joe*_*ern 16

UPDATE

正如其他用户指出的那样,这个解决方案不再适用于iOS10.如果有人知道如何让它在iOS10中运行,请告诉我们.

iOS <10的解决方案:

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

if let settingsURL = NSURL(string: UIApplicationOpenSettingsURLString) {
    UIApplication.sharedApplication().openURL(settingsURL)
}
Run Code Online (Sandbox Code Playgroud)

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

在过去(iOS 5.1之前),您可以打开设置URL并直接转到"设置"应用中的任何子页面.Apple在iOS 5.1中删除了此功能.

然而它似乎在iOS 8和9中再次起作用.它没有被Apple官方记录,但似乎有效,但我不确定这是多么可靠.它适用于我的iOS 9.1 iPhone,但不适用于模拟器.

因此,请谨慎使用,以便打开键盘设置:

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

或者更深入:

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

编辑: 正如iHulk在评论中提到的,您可能必须prefs在项目的Info.plist文件中添加URL方案才能使其工作.

  • 什么都没发生,canOpenURL正在返回false.刚刚找到一个Hack,如果你在URL方案中添加"prefs",那么这个URL就开始工作了. (2认同)
  • https://developer.apple.com/library/ios/qa/qa1924/_index.html很好的解释 (2认同)
  • 不再适用于iOS 10.任何解决方法? (2认同)
  • 这是正确的,在iOS 10中不起作用.任何解决方案呢? (2认同)

Ank*_*t J 9

从iOS 10开始,应该使用"App-Prefs:root"而不是"prefs:root".见下面的Objective C代码.经测试,代码工作正常,但苹果可能因此而拒绝该应用.
注意:正如所指出的,这仅适用于ios 10

 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");
    }];
}
Run Code Online (Sandbox Code Playgroud)