NSInternalInconsistencyException?发送后布局约束仍需要更新
NSInternalInconsistencyException? The layout constraints still need update after sending
我遇到了一个问题,我有一个忘记密码选项,我在其中放置了一个带输入字段的 UIAlertView。
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Forgot Password?"
message:@"Please enter your username to retrieve password"
delegate:self
cancelButtonTitle:@"Cancel"
otherButtonTitles:@"Ok", nil];
[alertView setAlertViewStyle:UIAlertViewStylePlainTextInput];
[alertView show];
当应用程序启动时,它工作正常,但是当我登录、执行各种操作、注销并按 "Forgot password" 时,出现此错误并且我的应用程序崩溃了:
*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'The layout constraints still need update after sending -updateConstraints to <_UIKeyboardLayoutAlignmentView: 0x7ffef5b37b00; frame = (0 0; 0 0); userInteractionEnabled = NO; layer = >.
_UIKeyboardLayoutAlignmentView or one of its superclasses may have overridden -updateConstraints without calling super. Or, something may have dirtied layout constraints in the middle of updating them. Both are programming errors.'
完整日志如下:
*** First throw call stack:
(
0 CoreFoundation 0x000000010e850c65 __exceptionPreprocess + 165
1 libobjc.A.dylib 0x000000010e4e9bb7 objc_exception_throw + 45
2 CoreFoundation 0x000000010e850b9d +[NSException raise:format:] + 205
3 UIKit 0x000000010f2c5427 -[UIView(AdditionalLayoutSupport) _internalUpdateConstraintsIfNeededAccumulatingViewsNeedingSecondPassAndViewsNeedingBaselineUpdate:] + 467
4 UIKit 0x000000010f2c553e -[UIView(AdditionalLayoutSupport) _updateConstraintsIfNeededAccumulatingViewsNeedingSecondPassAndViewsNeedingBaselineUpdate:] + 124
5 CoreFoundation 0x000000010e757354 CFArrayApplyFunction + 68
6 UIKit 0x000000010f2c52ed -[UIView(AdditionalLayoutSupport) _internalUpdateConstraintsIfNeededAccumulatingViewsNeedingSecondPassAndViewsNeedingBaselineUpdate:] + 153
7 UIKit 0x000000010f2c553e -[UIView(AdditionalLayoutSupport) _updateConstraintsIfNeededAccumulatingViewsNeedingSecondPassAndViewsNeedingBaselineUpdate:] + 124
8 CoreFoundation 0x000000010e757354 CFArrayApplyFunction + 68
9 UIKit 0x000000010f2c52ed -[UIView(AdditionalLayoutSupport) _internalUpdateConstraintsIfNeededAccumulatingViewsNeedingSecondPassAndViewsNeedingBaselineUpdate:] + 153
10 UIKit 0x000000010f2c553e -[UIView(AdditionalLayoutSupport) _updateConstraintsIfNeededAccumulatingViewsNeedingSecondPassAndViewsNeedingBaselineUpdate:] + 124
11 UIKit 0x000000010f2c5a0e __60-[UIView(AdditionalLayoutSupport) updateConstraintsIfNeeded]_block_invoke + 96
12 Foundation 0x000000010e0891be -[NSISEngine withBehaviors:performModifications:] + 155
13 UIKit 0x000000010f2c56d6 -[UIView(AdditionalLayoutSupport) updateConstraintsIfNeeded] + 231
14 UIKit 0x000000010f2b8ebe -[UIWindow(UIConstraintBasedLayout) updateConstraintsIfNeeded] + 91
15 UIKit 0x000000010f2c5dde -[UIView(AdditionalLayoutSupport) _updateConstraintsAtEngineLevelIfNeeded] + 146
16 UIKit 0x000000010ecbd56a -[UIView(Hierarchy) layoutBelowIfNeeded] + 340
17 UIKit 0x000000010f05245e -[_UIAlertControllerAnimatedTransitioning animateTransition:] + 672
18 UIKit 0x000000010ed57a4e __56-[UIPresentationController runTransitionForCurrentState]_block_invoke + 1867
19 UIKit 0x000000010ec6d62c _applyBlockToCFArrayCopiedToStack + 314
20 UIKit 0x000000010ec6d4a6 _afterCACommitHandler + 533
21 CoreFoundation 0x000000010e783ca7 __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 23
22 CoreFoundation 0x000000010e783c00 __CFRunLoopDoObservers + 368
23 CoreFoundation 0x000000010e779a33 __CFRunLoopRun + 1123
24 CoreFoundation 0x000000010e779366 CFRunLoopRunSpecific + 470
25 GraphicsServices 0x00000001126c9a3e GSEventRunModal + 161
26 UIKit 0x000000010ec49900 UIApplicationMain + 1282
27 Univet 0x000000010d83150f main + 111
28 libdyld.dylib 0x000000011017a145 start + 1
29 ??? 0x0000000000000001 0x0 + 1
)
libc++abi.dylib: terminating with uncaught exception of type NSException
我正在使用 IQKeyboardManager 在文本字段之间导航。
请多指教,不胜感激。
提前致谢。
经过简单的 Google 搜索,我发现 您的问题。
On iOS 8.3 if you the keyboard is being displayed and then you try to display a UIAlertView or UIAlertController that has an input field you will get this crash.
我遇到了一个问题,我有一个忘记密码选项,我在其中放置了一个带输入字段的 UIAlertView。
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Forgot Password?"
message:@"Please enter your username to retrieve password"
delegate:self
cancelButtonTitle:@"Cancel"
otherButtonTitles:@"Ok", nil];
[alertView setAlertViewStyle:UIAlertViewStylePlainTextInput];
[alertView show];
当应用程序启动时,它工作正常,但是当我登录、执行各种操作、注销并按 "Forgot password" 时,出现此错误并且我的应用程序崩溃了:
*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'The layout constraints still need update after sending -updateConstraints to <_UIKeyboardLayoutAlignmentView: 0x7ffef5b37b00; frame = (0 0; 0 0); userInteractionEnabled = NO; layer = >. _UIKeyboardLayoutAlignmentView or one of its superclasses may have overridden -updateConstraints without calling super. Or, something may have dirtied layout constraints in the middle of updating them. Both are programming errors.'
完整日志如下:
*** First throw call stack:
(
0 CoreFoundation 0x000000010e850c65 __exceptionPreprocess + 165
1 libobjc.A.dylib 0x000000010e4e9bb7 objc_exception_throw + 45
2 CoreFoundation 0x000000010e850b9d +[NSException raise:format:] + 205
3 UIKit 0x000000010f2c5427 -[UIView(AdditionalLayoutSupport) _internalUpdateConstraintsIfNeededAccumulatingViewsNeedingSecondPassAndViewsNeedingBaselineUpdate:] + 467
4 UIKit 0x000000010f2c553e -[UIView(AdditionalLayoutSupport) _updateConstraintsIfNeededAccumulatingViewsNeedingSecondPassAndViewsNeedingBaselineUpdate:] + 124
5 CoreFoundation 0x000000010e757354 CFArrayApplyFunction + 68
6 UIKit 0x000000010f2c52ed -[UIView(AdditionalLayoutSupport) _internalUpdateConstraintsIfNeededAccumulatingViewsNeedingSecondPassAndViewsNeedingBaselineUpdate:] + 153
7 UIKit 0x000000010f2c553e -[UIView(AdditionalLayoutSupport) _updateConstraintsIfNeededAccumulatingViewsNeedingSecondPassAndViewsNeedingBaselineUpdate:] + 124
8 CoreFoundation 0x000000010e757354 CFArrayApplyFunction + 68
9 UIKit 0x000000010f2c52ed -[UIView(AdditionalLayoutSupport) _internalUpdateConstraintsIfNeededAccumulatingViewsNeedingSecondPassAndViewsNeedingBaselineUpdate:] + 153
10 UIKit 0x000000010f2c553e -[UIView(AdditionalLayoutSupport) _updateConstraintsIfNeededAccumulatingViewsNeedingSecondPassAndViewsNeedingBaselineUpdate:] + 124
11 UIKit 0x000000010f2c5a0e __60-[UIView(AdditionalLayoutSupport) updateConstraintsIfNeeded]_block_invoke + 96
12 Foundation 0x000000010e0891be -[NSISEngine withBehaviors:performModifications:] + 155
13 UIKit 0x000000010f2c56d6 -[UIView(AdditionalLayoutSupport) updateConstraintsIfNeeded] + 231
14 UIKit 0x000000010f2b8ebe -[UIWindow(UIConstraintBasedLayout) updateConstraintsIfNeeded] + 91
15 UIKit 0x000000010f2c5dde -[UIView(AdditionalLayoutSupport) _updateConstraintsAtEngineLevelIfNeeded] + 146
16 UIKit 0x000000010ecbd56a -[UIView(Hierarchy) layoutBelowIfNeeded] + 340
17 UIKit 0x000000010f05245e -[_UIAlertControllerAnimatedTransitioning animateTransition:] + 672
18 UIKit 0x000000010ed57a4e __56-[UIPresentationController runTransitionForCurrentState]_block_invoke + 1867
19 UIKit 0x000000010ec6d62c _applyBlockToCFArrayCopiedToStack + 314
20 UIKit 0x000000010ec6d4a6 _afterCACommitHandler + 533
21 CoreFoundation 0x000000010e783ca7 __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 23
22 CoreFoundation 0x000000010e783c00 __CFRunLoopDoObservers + 368
23 CoreFoundation 0x000000010e779a33 __CFRunLoopRun + 1123
24 CoreFoundation 0x000000010e779366 CFRunLoopRunSpecific + 470
25 GraphicsServices 0x00000001126c9a3e GSEventRunModal + 161
26 UIKit 0x000000010ec49900 UIApplicationMain + 1282
27 Univet 0x000000010d83150f main + 111
28 libdyld.dylib 0x000000011017a145 start + 1
29 ??? 0x0000000000000001 0x0 + 1
)
libc++abi.dylib: terminating with uncaught exception of type NSException
我正在使用 IQKeyboardManager 在文本字段之间导航。
请多指教,不胜感激。
提前致谢。
经过简单的 Google 搜索,我发现
On iOS 8.3 if you the keyboard is being displayed and then you try to display a UIAlertView or UIAlertController that has an input field you will get this crash.