it-swarm.com.de

iOS 8.1 Simulator verwendet trotz deutscher Hardwaretastatur immer das US-Tastaturlayout

Aus irgendeinem Grund kann ich mit meiner deutschen Tastatur keine Texte mehr in iOS Simulator eingeben.

Nach dem Herunterladen von Xcode 6.1 (das iOS 8.1 enthält) blieb ich beim US-Layout hängen.

Ich habe versucht, alle Einstellungen für Hardware/Tastatur zu ändern, ~/Library/Preferences/com.Apple.iphonesimulator.plist zu löschen und den iOS-Simulator zurückzusetzen.

Nichts hat geholfen!

Soll ich das komplette Paket erneut installieren?

50
pawi

Es sind die Fehler des iOS 8.1-Simulators. 

Ich konnte die Sprache testen, indem Sie die "Anwendungssprache" im verwendeten Schema festlegen.

Gehen Sie zu Produkt> Schema> Schema bearbeiten ... oder drücken Sie cmd + Y. 

Quelle: Antwort von Yoshihiro Sakamoto im Apple Dev Forum

enter image description here

33
dobiho

Dies ist ein bekanntes Problem mit der Simulator-Laufzeitumgebung für iOS 8.1 und wird in den Xcode 6.1-Versionshinweisen erwähnt:

Lokalisierungs- und Tastatureinstellungen, einschließlich Tastaturen von Drittanbietern, werden von Safari, Maps und Entwickler-Apps im iOS 8.1-Simulator nicht korrekt berücksichtigt. [NSLocale currentLocale] gibt en_US zurück und es sind nur die englischen und Emoji-Tastaturen verfügbar. (18418630, 18512161)

Gleiches gilt für andere Einstellungen, die sich auf alle Apps und nicht nur auf das Gebietsschema auswirken sollten (z. B. Tastatureinstellungen).

Wie in den Versionshinweisen zu iOS SDK 8.2 beta 2 erwähnt, sollte dieses Problem in iOS 8.2 behoben sein:

In Beta 2 behoben Zusätzliche Tastaturen, einschließlich Tastaturen von Drittanbietern, wird möglicherweise nicht in Safari, Maps oder Apps von Drittanbietern in iOS Simulator angezeigt

Wenn Sie iOS 8.1 verwenden müssen, sollten Sie das deutsche Layout in einigen Apps verwenden können, in anderen jedoch nicht. Zum Beispiel sind Safari und Maps zwei Beispiele für Apps, mit denen es nicht funktioniert.

Bevor Apple ein Update ausführt, kann die folgende überprüfte Lösung basierend auf NSLocale swizzling verwendet werden.

Tatsächlich müssen wir nur die falsche Variable currentLocale ersetzen, die im iOS8.1-Simulator beschädigt ist.

Fügen Sie die Kategorie zu Projekten hinzu und fügen Sie sie in der .pch-Datei hinzu ( vergessen Sie nicht, das Projekt zu löschen und neu zu erstellen ).

//  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

Hoffe jetzt siehst du dasselbe

iOS8 simulator screenshot with German keyboard

Eine weitere Sache: Mit diesem Ansatz erzielen Sie einen angenehmen Nebeneffekt: Die über ein Gebietsschema ausgewählte Kategorie wird immer verwendet und hängt nicht von den Systemeinstellungen und den hinzugefügten Tastaturen ab. Das Zurücksetzen der Simulator-Einstellungen erfordert also nicht, Ihre Tastatur erneut hinzuzufügen. 

Der Kategorieansatz ermöglicht das gleichzeitige Überschreiben von Sprach- und Regionseinstellungen für alle Ziele, ohne dass diese Parameter in jedem Zielschema separat geändert werden müssen.

13
malex

auf Ihrem Ziel gehen Sie auf das Bearbeitungsschema -> wählen Sie Ihre Anwendungssprache und Ihren Anwendungsbereich aus. Software-Tastaturschalterlayout ok, Hardware Nein) 

Es gibt ein weiteres bekanntes Problem mit 8.1, das dazu führt, dass Tastaturen nicht im Simulator angezeigt werden. 

Bekannte Probleme mit Tastaturen Zusätzliche Tastaturen, einschließlich Drittanbieter Tastaturen werden möglicherweise nicht in Safari, Maps oder Apps von Drittanbietern in der .__ angezeigt. Simulator.

Umgehung: Tastaturen sollten in Kalender, Spotlight, .__ testbar sein. Kontakte und Fotos.

Ich interpretiere das so, dass Ihre einschließende App auch nicht funktioniert. Meine Tastatur wird nicht in Safari oder Maps angezeigt, funktioniert aber gut in der Suchleiste für Fotos.

7

Die @malex-Lösung, indem es die currentLocale umschwirrt und sie der .pch-Datei hinzufügt, hat fast den Trick für mich gemacht. Es hat die Tastatur des Gebietsschemas (Dänisch) aktiviert, aber nicht zur Standardtastatur gemacht.

Um es zur Standardtastatur zu machen, musste ich auch auf NSLocale die PreferredLanguages-Methode verwenden.

Danke @malex.

In allem endete es:

@interface NSLocale (iOS8)
@end

@implementation NSLocale (iOS8)

+ (void)load
{
    Method originalCurrentLocale = class_getClassMethod(self, @selector(currentLocale));
    Method swizzledCurrentLocale = class_getClassMethod(self, @selector(swizzled_currentLocale));
    method_exchangeImplementations(originalCurrentLocale, swizzledCurrentLocale);

    Method originalPreferredLanguages = class_getClassMethod(self, @selector(preferredLanguages));
    Method swizzledPreferredLanguages = class_getClassMethod(self, @selector(swizzled_preferredLanguages));
    method_exchangeImplementations(originalPreferredLanguages, swizzledPreferredLanguages);
}

+ (NSLocale *)swizzled_currentLocale
{
    return [NSLocale localeWithLocaleIdentifier:@"da_DK"];
}

+ (NSArray *)swizzled_preferredLanguages
{
    return @[@"da"];
}

@end
2
micmdk

Als Alternative zu den oben genannten Korrekturen können Umgebungsvariablen zur Umgehung verwendet werden.

Fügen Sie eine Umgebungsvariable hinzu, sagen Sie "myLocale" unter: Bearbeitungsschema> Argumente> Umgebungsvariablen für Xcode.

(Stellen Sie sicher, dass Sie die Umgebungsvariable immer dann aktivieren, wenn Sie das gewünschte Gebietsschema erzwingen möchten.) enter image description here

In Ihrem Code können Sie eine Bedingung hinzufügen, um zu überprüfen, ob die Umgebungsvariable aktiviert ist.

NSString *locale = [[[NSProcessInfo processInfo] environment] objectForKey:@"myLocale"];
if (locale) {
    NSLog(@"Using environment variable for locale");
} else{
    NSLog(@"Using locale configured from settings");
}
0
user2990765

Tippen Sie in der Einstellungen-App unter Allgemein> Tastatur> Tastaturen auf Neue Tastatur hinzufügen (klicken Sie auf).

enter image description here

Wenn Sie meinen, der Simulator akzeptiert keine Eingaben von Ihrer Hardwaretastatur, müssen Sie sie anschließen (Befehl-Umschalt-K):

enter image description here

Dies ist im Menü Hardware> Tastatur.

0
Undo