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?
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
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
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.
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.
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
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.)
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");
}
Tippen Sie in der Einstellungen-App unter Allgemein> Tastatur> Tastaturen auf Neue Tastatur hinzufügen (klicken Sie auf).
Wenn Sie meinen, der Simulator akzeptiert keine Eingaben von Ihrer Hardwaretastatur, müssen Sie sie anschließen (Befehl-Umschalt-K):
Dies ist im Menü Hardware> Tastatur.