尽管德国硬件键盘,iOS 8.1模拟器始终使用美国键盘布局

paw*_*awi 53 keyboard xcode ios ios-simulator

出于某种原因,我无法再使用我的原生德语键盘输入文本进入iOS模拟器.

下载Xcode 6.1(包含iOS 8.1)后,我陷入了美国布局.

我尝试过更改所有硬件/键盘设置,删除~/Library/Preferences/com.apple.iphonesimulator.plist和重置iOS模拟器等内容.

什么都没有帮助!

我应该重新安装完整的包裹吗?

Jer*_*oia 46

这是iOS 8.1模拟器运行时的已知问题,在Xcode 6.1发行说明中提到:

iOS 8.1模拟器中的Safari,地图和开发人员应用程序无法正确识别本地化和键盘设置(包括第三方键盘).[NSLocale currentLocale]返回en_US,只有英语和表情符号键盘可用.(18418630,18512161)

对于应该影响所有应用程序而不仅仅是区域设置的其他首选项(例如:键盘设置)也是如此.

iOS SDK 8.2 beta 2发行说明中所述,此问题应在iOS 8.2中解决:

已修复测试版2其他键盘(包括第三方键盘)可能不会出现在iOS模拟器中的Safari,地图或第三方应用中

如果您需要使用iOS 8.1,您应该能够在某些应用程序中使用德语布局而不能使用其他应用程序.例如,Safari和地图是两个无法使用的应用示例.

  • 这个`NSLocale`问题是否也导致`[[NSLocale preferredLanguages] objectAtIndex:0]`总是返回`"en"` 这似乎与我所遇到的问题类似,@ JeremyHuddleston这是一个可以帮我看看这个问题吗?谢谢!http://stackoverflow.com/questions/26572115/nslocale-preferredlanguages-objectatindex0-always-return-en (2认同)

dob*_*iho 35

这是iOS 8.1模拟器的错误.

我可以通过在使用的方案中设置"应用程序语言"来测试语言.

转到产品>方案>编辑方案...或按cmd + Y.

资料来源:Apple Dev Forum中Yoshihiro Sakamoto的回答

在此输入图像描述

  • 为什么我的"应用语言"部分只能选择"英语"和"系统语言"而没有我想要的国家?即使我已经改变了我想要设置的模拟器语言. (9认同)

mal*_*lex 13

在Apple修复之前,可以使用以下检查的解决方案NSLocale swizzling.

实际上我们只需要替换currentLocale在iOS8.1模拟器中被破坏的错误.

将类别附加到项目并将其添加到.pch文件中(不要忘记清除和重建项目).

//  NSLocale+ios8.h
//  Created by Alexey Matveev on 01.11.2014.
//  Copyright (c) 2014 Alexey Matveev. All rights reserved.

#if TARGET_IPHONE_SIMULATOR

// define here your locale identifier: de_DE, ru_RU, etc
#define LOCALE_IDENTIFIER @"de_DE"

@interface NSLocale (iOS8)
@end

#endif

//  NSLocale+ios8.m
//  Created by Alexey Matveev on 01.11.2014.
//  Copyright (c) 2014 Alexey Matveev. All rights reserved.

#if TARGET_IPHONE_SIMULATOR

#import "NSLocale+ios8.h"
#import <objc/runtime.h>

@implementation NSLocale (iOS8)

+ (void)load
{
    Method originalMethod = class_getClassMethod(self, @selector(currentLocale));
    Method swizzledMethod = class_getClassMethod(self, @selector(swizzled_currentLocale));
    method_exchangeImplementations(originalMethod, swizzledMethod);
}

+ (NSLocale*)swizzled_currentLocale
{
    return [NSLocale localeWithLocaleIdentifier:LOCALE_IDENTIFIER];
}

@end

#endif
Run Code Online (Sandbox Code Playgroud)

希望你现在看到的一样

iOS8模拟器截图与德国键盘

还有一件事,使用这种方法可以得到一个很好的副作用:通过类别区域设置选择的键盘始终在使用,并且不依赖于系统设置和添加的键盘.因此,模拟器设置重置不需要再次添加键盘.

类别方法允许一次覆盖所有目标的语言和区域设置,而无需单独更改每个目标方案中的这些参数.


小智 9

在您的目标上去编辑方案 - >选择您的应用程序lang和应用程序区域(德语).软件键盘开关布局好,硬件没有)


Saf*_*ive 7

8.1的另一个已知问题是导致键盘无法在模拟器中显示.

键盘已知问题其他键盘(包括第三方键盘)可能不会出现在模拟器上的Safari,地图或第三方应用程序中.

解决方法:键盘应该可以在日历,Spotlight,联系人和照片中测试.

我认为这意味着你的封闭应用程序也无法正常工作.我的键盘不会显示在Safari或地图中,但在照片搜索栏中可以正常使用.