Сбой автокоррекции UITextField в iOS 4.3 на симуляторе - PullRequest
24 голосов
/ 10 марта 2011

Автокоррекция UITextField приводит к сбою моего приложения на симуляторе с целью сборки iOS 4.3 sdk Отлично работает на устройстве и в симуляторе с iOS 4.2 SDK.

Кто-нибудь еще сталкивался с этой проблемой? Я полагаю, это ошибка с 4.3 SDK?

Как только я наберу второй символ. Трассировка стека

#0  0x01c01000 in objc_assign_ivar ()
#1  0x03b7ec34 in -[AppleSpell init] ()
#2  0x007e7538 in -[UITextChecker _checker] ()
#3  0x007e8de9 in -[UITextChecker checkSpellingOfString:startingAt:language:wrap:correction:] ()
#4  0x0b335725 in TIInputManagerZephyr::lookup_spellcheck_candidates(KB::String const&) ()
#5  0x0b3353f3 in TIInputManagerZephyr::lookup_static_dynamic_candidates(KB::String const&, KB::String const&, KB::Vector<KB::FPoint> const&, bool) ()
#6  0x0b332b2b in TIInputManager::lookup() ()
#7  0x0b332e18 in TIInputManager::autocorrection() ()
#8  0x0b34a06b in -[TIKeyboardInputManagerZephyr autocorrection] ()
#9  0x005cfbe8 in -[UIKeyboardImpl generateCandidatesWithCompletions:] ()
#10 0x005cfc3b in -[UIKeyboardImpl generateCandidates] ()
#11 0x005dca23 in -[UIKeyboardImpl addInputString:fromVariantKey:] ()
#12 0x005de71b in -[UIKeyboardImpl handleKeyEvent:] ()
#13 0x0070a2ee in -[UIKeyboardLayoutStar sendStringAction:forKey:] ()
#14 0x0070ed19 in -[UIKeyboardLayoutStar touchUp:] ()
#15 0x005ebda2 in -[UIKeyboardLayout touchesEnded:withEvent:] ()
#16 0x004b8ded in -[UIWindow _sendTouchesForEvent:] ()
#17 0x00499c37 in -[UIApplication sendEvent:] ()
#18 0x0049ef2e in _UIApplicationHandleEvent ()
#19 0x02011992 in PurpleEventCallback ()
#20 0x0176a944 in __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ ()
#21 0x016cacf7 in __CFRunLoopDoSource1 ()
#22 0x016c7f83 in __CFRunLoopRun ()
#23 0x016c7840 in CFRunLoopRunSpecific ()
#24 0x016c7761 in CFRunLoopRunInMode ()
#25 0x020101c4 in GSEventRunModal ()
#26 0x02010289 in GSEventRun ()
#27 0x004a2c93 in UIApplicationMain ()

Также иногда вы увидите намного более простую трассировку, которая просто начинается с главного, а затем сразу прекращается на objc_assign_ivar. Это также происходит при вводе текста в текстовом поле, например UISearchBar.

Ответы [ 6 ]

34 голосов
/ 11 июля 2011

На симуляторе откройте Настройки -> Клавиатура и отключите все опции.Это предотвращает сбой (пока ошибка не устранена).

7 голосов
/ 08 апреля 2011

У меня возникла та же проблема, при запуске симулятора 4.3 в Lion Developer Preview 2. Это ошибка в симуляторе на Lion. Я временно отключил автокоррекцию (setAutocorrectionType: UITextAutocorrectionTypeNo).

6 голосов
/ 04 января 2012

Мы должны обновить Simulator 4.3, выполнив следующие действия:

  1. Зайдите в Xcode -> Настройки -> Загрузить
  2. Обновление iOS 4.3 Simulator

И сбросьте симулятор и запустите его снова. Это сделано.

3 голосов
/ 10 марта 2011

Пожалуйста, отправьте отчет об ошибке на http://bugreport.apple.com, если вы чувствуете, что в SDK есть ошибка.

Но, чтобы ответить вам, у меня нет той же проблемы, поэтому это может быть проблема в вашем коде.Не могли бы вы проверить трассировку стека перед сбоем и посмотреть, не хватает ли чего-то, что каким-то образом работало в старых версиях ОС?

Ссылка: Руководство по разработке iOS

1 голос
/ 15 августа 2011

Отключение «Автокоррекции» в настройках клавиатуры симулятора исправило эту проблему для меня.

enter image description here

0 голосов
/ 08 июля 2011

Я тоже сталкивался с этой проблемой. В моей ситуации я смог отследить его до вызова resignFirstResponder текстового поля, которое в данный момент имеет фокус.

У меня есть код, который выглядит примерно так:

if(loginSuccess) {
    [self.userName resignFirstResponder]; 
    [self.password resignFirstResponder]; // This is the one with focus
}

Теперь, когда я закомментировал вызов пароля resignFirstResponder, я больше не получал этот сбой.

Это определенно ошибка, о которой следует сообщить.

...