ios exception

ios - NSInteralInconsistencyException-UIKeyboardLayoutAlignmentView



(4)

Esto es definitivamente un error con iOS8.3 cuando se muestra un UIAlertView o UIAlertController cuando ya se muestra el teclado.

Una solución es asignar el campo de texto de la vista de alerta como el primer respondedor. Esto funciona mejor que ocultar el teclado mediante resignFirstResponder o endEditing porque el teclado no parpadea.

UIAlertView *alertView = [[UIAlertView alloc] initWithTitle....... alertView.alertViewStyle = UIAlertViewStylePlainTextInput; UITextField *txtEmail = [alertView textFieldAtIndex:0]; [txtEmail becomeFirstResponder]; [alertView show];

Estoy obteniendo el bloqueo de seguimiento en mis informes, ¡pero no tengo idea de dónde empezar a buscar! - Cualquier ayuda apreciada. No tengo llamadas ni referencia a UIKeyboardLayoutAlignmentView

Fatal Exception: NSInternalInconsistencyException The layout constraints still need update after sending -updateConstraints to <_UIKeyboardLayoutAlignmentView: 0x14df2550; frame = (0 0; 0 0); userInteractionEnabled = NO; layer = <CALayer: 0x1603de90>>. _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. Thread : Crashed: com.apple.main-thread 0 libsystem_kernel.dylib 0x32d52df0 __pthread_kill + 8 1 libsystem_pthread.dylib 0x32dd1cc7 pthread_kill + 62 2 libsystem_c.dylib 0x32cee909 abort + 76 3 libc++abi.dylib 0x3201c9c9 __cxa_bad_cast 4 libc++abi.dylib 0x32036671 default_unexpected_handler() 5 libobjc.A.dylib 0x326fcf25 _objc_terminate() + 192 6 libc++abi.dylib 0x32033de3 std::__terminate(void (*)()) + 78 7 libc++abi.dylib 0x320338af __cxa_rethrow + 102 8 libobjc.A.dylib 0x326fcdd3 objc_exception_rethrow + 42 9 CoreFoundation 0x240bf29d CFRunLoopRunSpecific + 632 10 CoreFoundation 0x240bf013 CFRunLoopRunInMode + 106 11 GraphicsServices 0x2b99e201 GSEventRunModal + 136 12 UIKit 0x27863a59 UIApplicationMain + 1440 Thread : Fatal Exception: NSInternalInconsistencyException 0 CoreFoundation 0x241aefef __exceptionPreprocess + 126 1 libobjc.A.dylib 0x326fcc8b objc_exception_throw + 38 2 CoreFoundation 0x241aef35 -[NSException initWithCoder:] 3 UIKit 0x27e34dad -[UIView(AdditionalLayoutSupport) _internalUpdateConstraintsIfNeededAccumulatingViewsNeedingSecondPassAndViewsNeedingBaselineUpdate:] + 448 4 UIKit 0x27e34ec3 -[UIView(AdditionalLayoutSupport) _updateConstraintsIfNeededAccumulatingViewsNeedingSecondPassAndViewsNeedingBaselineUpdate:] + 126 5 CoreFoundation 0x240bec6d CFArrayApplyFunction + 36 6 UIKit 0x27e34c75 -[UIView(AdditionalLayoutSupport) _internalUpdateConstraintsIfNeededAccumulatingViewsNeedingSecondPassAndViewsNeedingBaselineUpdate:] + 136 7 UIKit 0x27e34ec3 -[UIView(AdditionalLayoutSupport) _updateConstraintsIfNeededAccumulatingViewsNeedingSecondPassAndViewsNeedingBaselineUpdate:] + 126 8 CoreFoundation 0x240bec6d CFArrayApplyFunction + 36 9 UIKit 0x27e34c75 -[UIView(AdditionalLayoutSupport) _internalUpdateConstraintsIfNeededAccumulatingViewsNeedingSecondPassAndViewsNeedingBaselineUpdate:] + 136 10 UIKit 0x27e34ec3 -[UIView(AdditionalLayoutSupport) _updateConstraintsIfNeededAccumulatingViewsNeedingSecondPassAndViewsNeedingBaselineUpdate:] + 126 11 UIKit 0x278f0a39 __60-[UIView(AdditionalLayoutSupport) updateConstraintsIfNeeded]_block_invoke + 84 12 Foundation 0x24e65755 -[NSISEngine withBehaviors:performModifications:] + 256 13 UIKit 0x278f0813 -[UIView(AdditionalLayoutSupport) updateConstraintsIfNeeded] + 206 14 UIKit 0x2790a663 -[UIWindow(UIConstraintBasedLayout) updateConstraintsIfNeeded] + 86 15 UIKit 0x27e35159 -[UIView(AdditionalLayoutSupport) _updateConstraintsAtEngineLevelIfNeeded] + 172 16 UIKit 0x27813d97 -[UIView(Hierarchy) layoutBelowIfNeeded] + 542 17 UIKit 0x27c77a2b -[_UIAlertControllerAnimatedTransitioning animateTransition:] + 690 18 UIKit 0x27adb08d __56-[UIPresentationController runTransitionForCurrentState]_block_invoke + 1820 19 UIKit 0x2787ea91 _applyBlockToCFArrayCopiedToStack + 308 20 UIKit 0x277f938f _afterCACommitHandler + 466 21 CoreFoundation 0x24174fed __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 20 22 CoreFoundation 0x241726ab __CFRunLoopDoObservers + 278 23 CoreFoundation 0x24172ab3 __CFRunLoopRun + 914 24 CoreFoundation 0x240bf201 CFRunLoopRunSpecific + 476 25 CoreFoundation 0x240bf013 CFRunLoopRunInMode + 106 26 GraphicsServices 0x2b99e201 GSEventRunModal + 136 27 UIKit 0x27863a59 UIApplicationMain + 1440


Esto podría ayudar a alguien con el mismo problema. Vine aquí para comprobar su respuesta, pero no funcionó para mí.

iOS 8.3 UIAlertController se bloquea al intentar agregar un campo de texto

Para reiterar lo que hay en el otro hilo, lo resolví configurando la bandera animada en "NO" al presentar el UIAlertController

[self presentViewController:alert animated:NO completion:nil];


Ok, el problema encontró una solución. En iOS8.3, si se muestra el teclado y luego intenta mostrar un UIAlertView o UIAlertController que tiene un campo de entrada, obtendrá este bloqueo.

Una solución simple (para mí) fue insertar

[self.window endEditing:YES];

o

[self.view endEditing:YES];

frente a las alertas que hacen esto y ya no se bloquea

Actualizar

En algunos casos, también he necesitado la siguiente línea (como se describe en Oren a continuación), con endEditing Y esta línea tengo cero problemas, pero con uno O el otro he visto el extraño fallo que es extraño, pero el ataque combinado parece trabajar !

UITextField *txtEmail = [alertView textFieldAtIndex:0]; [txtEmail becomeFirstResponder];


Tuve el mismo problema al usar el complemento Cordova Dialogs en una aplicación Ionic. Parece a partir de iOS 8.3 cada vez que se llama a una notificación o alerta y el teclado ya está visible, intenta abrir otro teclado que provoca el bloqueo. Agregué esta una línea al archivo CDVNotification.m en el complemento.

if ([dialogType isEqualToString:DIALOG_TYPE_PROMPT]) { alertView.alertViewStyle = UIAlertViewStylePlainTextInput; UITextField* textField = [alertView textFieldAtIndex:0]; **[textField becomeFirstResponder];** //added this line to Fix :) textField.text = defaultText; }