【问题标题】:UITextField becomeFirstResponder crashes the iOS app randomlyUITextField becomeFirstResponder 随机使 iOS 应用崩溃
【发布时间】:2015-11-19 10:14:06
【问题描述】:

我开发了一个应用程序,它有多个文本字段,文本字段带有发光边框。当我进行内部测试时,它一直运行良好,但我看到 Fabric 使用以下堆栈跟踪报告崩溃。我是否遗漏了一些东西来追踪这个问题?有人能解释一下这个问题吗?

Thread : Fatal Exception: NSInternalInconsistencyException
0  CoreFoundation                 0x185de0f48 __exceptionPreprocess
1  libobjc.A.dylib                0x19a92ff80 objc_exception_throw
2  CoreFoundation                 0x185de0e90 -[NSException initWithCoder:]
3  Foundation                     0x186c85fb4 -[NSISEngine minimizeConstantInObjectiveRowWithHead:]
4  Foundation                     0x186c85aa8 -[NSISEngine optimize]
5  Foundation                     0x186c815dc -[NSISEngine withBehaviors:performModifications:]
6  UIKit                          0x18b36e1d4 -[UIView(Hierarchy) _postMovedFromSuperview:]
7  UIKit                          0x18b680834 __UIViewWasRemovedFromSuperview
8  UIKit                          0x18b36cbf8 -[UIView(Hierarchy) removeFromSuperview]
9  UIKit                          0x18b895e58 -[UIKeyboardPredictionView setPredictionViewState:animate:notify:]
10 UIKit                          0x18b77f41c -[UIKeyboardImpl updatePredictionView]
11 UIKit                          0x18b486c68 -[UIKeyboardImpl finishLayoutChangeWithArguments:]
12 UIKit                          0x18b39ce8c -[UIKeyboardImpl updateLayout]
13 UIKit                          0x18b3a1bd4 -[UIKeyboardImpl setDelegate:force:]
14 UIKit                          0x18b39b0b8 -[UIPeripheralHost(UIKitInternal) _reloadInputViewsForResponder:]
15 UIKit                          0x18b39abec -[UIResponder(UIResponderInputViewAdditions) reloadInputViews]
16 UIKit                          0x18b3fc09c -[UIResponder becomeFirstResponder]
17 UIKit                          0x18b3fc448 -[UIView(Hierarchy) becomeFirstResponder]
18 UIKit                          0x18b483814 -[UITextField becomeFirstResponder]
19 MyApp                          0x10012f6a4 -[FormattedField becomeFirstResponder] (GlowingTextField.m:139)
20 MyApp                          0x100130190 -[GlowingTextField becomeFirstResponder] (GlowingTextField.m:271)
21 UIKit                          0x18b5341a8 -[UITextInteractionAssistant(UITextInteractionAssistant_Internal) setFirstResponderIfNecessary]
22 UIKit                          0x18b53365c -[UITextInteractionAssistant(UITextInteractionAssistant_Internal) oneFingerTap:]
23 UIKit                          0x18b8ef330 _UIGestureRecognizerSendTargetActions
24 UIKit                          0x18b518b5c _UIGestureRecognizerSendActions
25 UIKit                          0x18b3a685c -[UIGestureRecognizer _updateGestureWithEvent:buttonEvent:]
26 UIKit                          0x18b8f070c ___UIGestureRecognizerUpdate_block_invoke898
27 UIKit                          0x18b3658b8 _UIGestureRecognizerRemoveObjectsFromArrayAndApplyBlocks
28 UIKit                          0x18b36263c _UIGestureRecognizerUpdate
29 UIKit                          0x18b3a46cc -[UIWindow _sendGesturesForEvent:]
30 UIKit                          0x18b3a3cc8 -[UIWindow sendEvent:]
31 UIKit                          0x18b3744a4 -[UIApplication sendEvent:]
32 UIKit                          0x18b37276c _UIApplicationHandleEventQueue
33 CoreFoundation                 0x185d98544 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__
34 CoreFoundation                 0x185d97fd8 __CFRunLoopDoSources0
35 CoreFoundation                 0x185d95cd8 __CFRunLoopRun
36 CoreFoundation                 0x185cc4ca0 CFRunLoopRunSpecific
37 GraphicsServices               0x190d2c088 GSEventRunModal
38 UIKit                          0x18b3dcffc UIApplicationMain
39 MyApp                          0x1000599ec main (main.m:14)
40 libdyld.dylib                  0x19b1728b8 start

【问题讨论】:

  • 你可以在视图控制器中使用 TapGesture 事件来完成键盘吗?
  • 是的,我已经在使用 TapGesture 退出键盘了
  • 我多次遇到同样的错误。
  • 错误因为您使用带有 Textfiled 的 tapGesture 和 Alertview。
  • 因此您需要删除点击手势以退出键盘并使用 Texfiled 方法:-(BOOL)textFieldShouldReturn:(UITextField *)textField

标签: ios objective-c xcode uitextfield twitter-fabric


【解决方案1】:

我之前也遇到过同样的崩溃。原因是视图控制器已释放并且 UITextField.delegate 未设置为零,是悬空指针问题。我在视图控制器的 dealloc 方法中设置 UITextField.delegate = nil,bug 已修复。

【讨论】:

  • 感谢您的更新。我在dealloc中保持零。但我无法确认它是否得到修复。因为这个崩溃没有得到我的内部测试来确认这个修复是否使它没有崩溃。您能否介绍一下制作它并确认修复?
  • @SrinivasG 您是否能够确认将代理设置为 nil 可以解决问题?如果没有,你找到正确的解决方案了吗?
  • @SrinivasG 你能确认它是否解决了你的问题吗?
  • 到目前为止,我们无法重现。如果再次报告崩溃,我会在这里更新
  • Fabric 再次报告崩溃,即使我们将委托设置为 nil
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-09
  • 1970-01-01
  • 2020-10-25
  • 1970-01-01
  • 2017-04-24
  • 1970-01-01
相关资源
最近更新 更多