Благодаря комментарию Гая, есть лучший способ сделать это. Я обновил свой собственный код, чтобы использовать следующее:
NSArray *keyboards = [UITextInputMode activeInputModes];
for (UITextInputMode *mode in keyboards) {
NSString *name = mode.primaryLanguage;
if ([name hasPrefix:@"zh-Han"]) {
// One of the Chinese keyboards is installed
break;
}
}
Swift: (Примечание:. Разбитая под IOS 9.x из-за плохой декларации для UITextInputMode activeInputModes
См this answer обходные пути.)
let keyboards = UITextInputMode.activeInputModes()
for var mode in keyboards {
var primary = mode.primaryLanguage
if let lang = primary {
if lang.hasPrefix("zh") {
// One of the Chinese keyboards is installed
break
}
}
}
Старый подход:
Я не знаю, если это разрешено или нет в приложении App Store, но вы можете сделать:
NSArray *keyboards = [[NSUserDefaults standardUserDefaults] objectForKey:@"AppleKeyboards"];
for (NSString *keyboard in keyboards) {
if ([keyboard hasPrefix:@"zh_Han"]) {
// One of the Chinese keyboards is installed
}
}
Вполне возможно, что если пользователь имеет только клавиатуры по умолчанию для их местности, не будет запись для ключа AppleKeyboards
. В этом случае вы можете проверить локаль пользователя. Если локаль для Китая, то вы можете предположить, что у них есть китайская клавиатура.
прекрасно работает, спасибо. Код для проверки текущего языка является ', если ([[[NSLocale preferredLanguages] objectAtIndex: 0] hasPrefix: @ "ж"]) {// текущий язык китайский }' – martinjbaker
Это решение Hacky. Вы, ребята, должны проверить http://stackoverflow.com/questions/12816325/applekeyboards-in-ios6 –
@GuyKogus Да, это может быть немного «взломанным», но это работает. Вопрос, на который вы ссылаетесь, не отвечает на этот вопрос. Ваша ссылка предназначена для определения текущей клавиатуры, а не для просмотра, доступна ли данная клавиатура. – rmaddy