IOS以编程方式获得活动语言的键盘字母

时间:2015-08-26 03:10:22

标签: ios keyboard

是否可以以编程方式获取所选语言的所有键盘字母?

1 个答案:

答案 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);
}