iOS 4.3在模拟器上的UITextField自动更正崩溃

时间:2011-03-10 08:36:30

标签: iphone ios4 uitextfield ios-simulator uisearchbar

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 ()

有时候,您会看到一个简单的跟踪,它只是从main开始,然后立即停止在objc_assign_ivar上。输入文本字段时也会发生这种情况,例如UISearchBar。

6 个答案:

答案 0 :(得分:34)

在模拟器上,打开设置 - &gt;键盘并关闭所有选项。 这可以防止崩溃(直到bug被解决)。

答案 1 :(得分:7)

我遇到了同样的问题,在Lion Developer Preview 2上运行4.3模拟器。这是Lion上模拟器中的一个错误。我暂时禁用了自动更正(setAutocorrectionType:UITextAutocorrectionTypeNo)。

答案 2 :(得分:6)

我们必须按照以下步骤更新模拟器4.3:

  1. 转到Xcode - &gt;偏好 - &gt;下载
  2. 更新iOS 4.3模拟器
  3. 重置模拟器并再次运行。已经完成了。

答案 3 :(得分:3)

如果您认为SDK中存在错误,请在http://bugreport.apple.com提交错误报告。

但是,为了回答你,我没有遇到同样的问题,所以它可能是你代码中的一个问题。你可以在崩溃之前检查堆栈跟踪,看看是否有一些你在旧操作系统版本中以某种方式工作的东西?

参考:iOS Development guide

答案 4 :(得分:1)

在模拟器键盘设置中关闭“自动更正”为我解决了这个问题。

enter image description here

答案 5 :(得分:0)

我也遇到过这个问题。在我的情况下,我能够将其跟踪到当前具有焦点的文本字段的resignFirstResponder调用。

我的代码看起来像这样:

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

现在当我注释掉密码resignFirstResponder调用时,我不再遇到那个崩溃。

这肯定是一个错误,应该报告。