2012-03-17 5 views
6

Moja aplikacja na iPhone'a nie może korzystać z miękkich klawiatur, które nie korzystają z amerykańskiego układu QWERTY. To znaczy, kiedy ustawiam klawiaturę na francuski lub niemiecki, nawet pola tekstowe nie mogą przyjmować tekstu, a komunikat o błędzie No input manager class for input mode jest wyświetlany na konsoli (po debugowaniu pod Xcode). Przełączenie na klawiaturę Emoji również pokazuje ten sam problem. Ale problem nie występuje w układach klawiatury QWERTY, takich jak klawiatury holenderskie i indonezyjskie.Nie można pisać przy użyciu klawiatur innych niż QWERTY na iOS

Wszystkie przypadki są spójne i odtwarzalne zarówno na urządzeniu (iPhone 4), jak i na symulatorze iPhone'a. Są to komunikaty o błędach w Xcode na konsolę debuggera

Gdy klawiatura jest ustawiona na francuskim:

No input manager class for input mode: fr_FR

Gdy klawiatura jest ustawiona do Niemiec:

No input manager class for input mode: de_DE

Kiedy klawiatura jest ustawiona na Emotikon:

No input manager class for input mode: emoji

Celem wdrożenia mojej aplikacji jest system iOS 3.1.3 (nadal obsługuję urządzenia pierwszej generacji), ale środowisko programistyczne to Xcode 4.3.1 i iOS 5.1 Simulator. (Nie wiem, czy jest to istotne, ale na wszelki wypadek).

Ktoś może pomóc, jak to naprawić?

Z góry dziękuję.

+1

Trudno powiedzieć, co jest źródłem, przypuszczam tam nie ma problemu z nowymi projektami? Pomocne byłoby utworzenie go do testowania i dodania używanych frameworków jeden po drugim. Prawdopodobnie pomoże to znaleźć nieaktualne lub dostarczyć Apple więcej szczegółów podczas zgłaszania błędu. –

+0

Tak, problem nie pojawia się w przypadku nowych projektów. – adib

+2

Proponuję ci wtedy, abyśmy umieścili jeden po drugim wszystkie frameworki z projektu buggy na nowy. Pomoże ci to zidentyfikować problem, zadać pytanie twórcom frameworków i zamieścić tutaj podpowiedź jako odpowiedź. –

Odpowiedz

2

W moim przypadku było to spowodowane przez mój swizzling -[NSBundle infoDictionary] i zwrócenie kopii oryginalnego słownika.

Zrobiłem to, aby móc zmienić wartości słownika informacji w czasie wykonywania (konkretnie, podając nieskróconą wyświetlaną nazwę pakietu, aby zastąpić skróconą wartość używaną na ekranie głównym).

Rozwiązaniem było nie zwrócić kopię słownika informacyjnym, ale z jakiegoś bardziej refleksji magii obsłużyć każdy klucz uzyskany ze słownika:

https://github.com/Lyndir/Pearl/blob/master/Pearl/NSBundle%2BPearlMutableInfo.m

+0

W moim przypadku po prostu usunąłem implementację [NSBundle infoDictionary] – adib

1

Nie wiem, czy ta odpowiedź pomoże ale znalazłem go z tego linku: http://code.google.com/p/networkpx/wiki/Creating_Keyboard_Bundles

Zresztą tutaj jest to, co mówię:

Jak UIKeyboardLayoutClass, w tym polu także można określić za pomocą taka sama składnia "= xxx". Możesz również wpisać tutaj nazwę klasy własnej klasy menedżera wejść .

Jeśli to pole nie jest używane, nie będą używane żadne menedżery danych wejściowych.

Mamy nadzieję, że to pomoże!

Powiązane problemy