Search code examples
iosipaduialertviewiqkeyboardmanager

NSInternalInconsistencyException? The layout constraints still need update after sending


I am facing a problem, I have a forgot password option in which I have placed a UIAlertView with input field.

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];

When the app is launched, it works fine, but when I login, do all kinds of stuff, sign out and press "Forgot password", I get this error and my app crashes:

*** 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.'

Here's the complete log:

*** 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

I am using IQKeyboardManager for navigation between text fields.

Please guide, your guidance will be appreciated.

Thank you in advance.


Solution

  • After a simple Google search I found the answer to your problem.

    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.