das*_*ist 27 keyboard ios ios8
我想知道是否有一种方法可以让我从键盘容器应用程序检测相关键盘是否已在设备的设置应用程序中激活.
例如,我有兴趣在容器应用程序中添加一个简单的"步骤"功能,其中步骤1将"激活键盘",而步骤2将取决于步骤1的完成.因此,我有兴趣弄清楚是否有办法检测键盘扩展是否被激活?
谢谢!
小智 51
这是我在我的一个项目中使用的方法.我想这就是你要求的,希望它对你有所帮助.
- (BOOL)isCustomKeyboardEnabled {
NSString *bundleID = @"com.company.app.customkeyboard"; // Replace this string with your custom keyboard's bundle ID
NSArray *keyboards = [[[NSUserDefaults standardUserDefaults] dictionaryRepresentation] objectForKey:@"AppleKeyboards"]; // Array of all active keyboards
for (NSString *keyboard in keyboards) {
if ([keyboard isEqualToString:bundleID])
return YES;
}
return NO;
}
Run Code Online (Sandbox Code Playgroud)
以防万一这里是Swift版本的Kurt的精彩和令人敬畏的答案:
func isKeyboardExtensionEnabled() -> Bool {
guard let appBundleIdentifier = Bundle.main.bundleIdentifier else {
fatalError("isKeyboardExtensionEnabled(): Cannot retrieve bundle identifier.")
}
guard let keyboards = UserDefaults.standard.dictionaryRepresentation()["AppleKeyboards"] as? [String] else {
// There is no key `AppleKeyboards` in NSUserDefaults. That happens sometimes.
return false
}
let keyboardExtensionBundleIdentifierPrefix = appBundleIdentifier + "."
for keyboard in keyboards {
if keyboard.hasPrefix(keyboardExtensionBundleIdentifierPrefix) {
return true
}
}
return false
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4038 次 |
最近记录: |