IOS 以编程方式获取活动语言的键盘字母
IOS programmatically get keyboard letters of active language
是否可以通过编程方式获取所选语言的所有键盘字母?
是的,这将存储并记录它们:
static inline NSArray * charactersInCharacterSet(NSCharacterSet *charSet) {
NSMutableArray * array = [NSMutableArray array];
NSData * data = [charSet bitmapRepresentation];
const char* bytes = [data bytes];
for (int i = 0; i < 8192; ++i) {
if (bytes[i >> 3] & (((unsigned int)1) << (i & 7))) {
[array addObject:[NSString stringWithFormat:@"%C", (unichar)i]];
}
}
return [NSArray arrayWithArray:array];
}
这样调用:
NSCharacterSet * charSet = [[[NSLocale alloc] initWithLocaleIdentifier:@"sr_Cyrl_ME"]objectForKey:NSLocaleExemplarCharacterSet];
NSArray * chars = charactersInCharacterSet(charSet);
for (NSString *str in chars) {
NSLog(@"%@", str);
}
这会让您在使用一些亚洲国家/地区的字母表时遇到困难,但它可以很好地返回基于拉丁语的语言字母表。它可能需要拒绝处理一些基于字符的字母表。
事实上,让我添加一些来源 material 以便您更深入地了解它:
http://samplecodebank.blogspot.com/2013_06_09_archive.html
还有一个方法,只是因为我知道我有这个方法,而且实现起来要容易得多,但这仅限于部分索引标题,例如 UITableView 的索引.
NSMutableArray *characters = [[NSMutableArray alloc] initWithArray:[[UILocalizedIndexedCollation currentCollation] sectionIndexTitles]];
for (id obj in characters) {
NSLog(@"%@", obj);
}
是否可以通过编程方式获取所选语言的所有键盘字母?
是的,这将存储并记录它们:
static inline NSArray * charactersInCharacterSet(NSCharacterSet *charSet) {
NSMutableArray * array = [NSMutableArray array];
NSData * data = [charSet bitmapRepresentation];
const char* bytes = [data bytes];
for (int i = 0; i < 8192; ++i) {
if (bytes[i >> 3] & (((unsigned int)1) << (i & 7))) {
[array addObject:[NSString stringWithFormat:@"%C", (unichar)i]];
}
}
return [NSArray arrayWithArray:array];
}
这样调用:
NSCharacterSet * charSet = [[[NSLocale alloc] initWithLocaleIdentifier:@"sr_Cyrl_ME"]objectForKey:NSLocaleExemplarCharacterSet];
NSArray * chars = charactersInCharacterSet(charSet);
for (NSString *str in chars) {
NSLog(@"%@", str);
}
这会让您在使用一些亚洲国家/地区的字母表时遇到困难,但它可以很好地返回基于拉丁语的语言字母表。它可能需要拒绝处理一些基于字符的字母表。
事实上,让我添加一些来源 material 以便您更深入地了解它:
http://samplecodebank.blogspot.com/2013_06_09_archive.html
还有一个方法,只是因为我知道我有这个方法,而且实现起来要容易得多,但这仅限于部分索引标题,例如 UITableView 的索引.
NSMutableArray *characters = [[NSMutableArray alloc] initWithArray:[[UILocalizedIndexedCollation currentCollation] sectionIndexTitles]];
for (id obj in characters) {
NSLog(@"%@", obj);
}