我正在使用此解决方案(https://stackoverflow.com/a/25786928)检测在Settins应用程序(iOS 8)中激活的所有自定义键盘:

- (void)printoutAllActiveKeyboards {
   // Array of all active keyboards
   NSArray *keyboards = [[[NSUserDefaults standardUserDefaults] dictionaryRepresentation] objectForKey:@"AppleKeyboards"];
   for (NSString *keyboard in keyboards)
      NSLog(@"Custom keyboard: %@", keyboard);
}

但这还不足以满足我的项目的需要-我需要知道用户当前为输入文本选择的是哪种自定义键盘。我有研究stackoverflow和其他资源,但没有找到任何解决方案。有什么方法可以在我的应用程序中检测当前选择用于文本输入的自定义键盘吗?

谢谢!

最佳答案

看一下此UIApplication API方法以禁用自定义键盘:

- (BOOL)application:(UIApplication *)application shouldAllowExtensionPointIdentifier:(NSString *)extensionPointIdentifier {
    if ([extensionPointIdentifier isEqualToString: UIApplicationKeyboardExtensionPointIdentifier]) {
         return NO;
    }
    return YES;
}

也许您可以修改UIApplicationKeyboardExtensionPointIdentifier的值来满足您的需求

10-05 17:40