是否可以以编程方式获取所选语言的所有键盘字母?
答案 0 :(得分:1)
是的,这将存储并记录它们:
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);
}
这会给你带来一些亚洲国家字母表的艰难时期,但它正在返回拉丁语言字母表就好了。它可能需要被拒绝来处理一些基于字符的字母表。
事实上,让我为您添加一些源材料,以便更深入地了解这一点:
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);
}