UISearchBar CGContext ERROR

Tengo un UISearchBar dentro de una vista, cada vez que lo presiono, después de que aparece el keyboard –

después de -(BOOL)searchBarShouldBeginEditing:(UISearchBar *)searchBar

lo envía a la console:

<Error>: CGContextSetStrokeColorWithColor : context no válido 0x0 . Este es un error grave. Esta aplicación, o una biblioteca que usa, está utilizando un context no válido y, por lo tanto, contribuye a una degradación global de la estabilidad y confiabilidad del sistema. Este aviso es una cortesía: arregle este problema. Se convertirá en un error fatal en una próxima actualización.

Repite el mismo error. Me pregunto ¿cuál podría ser exactamente el problema?

Creo que hay un context NULL por ahí, pero ¿qué tiene que ver con un UISearchBar? tnx

Es un problema conocido en el que Apple está trabajando. Debe corregirse en la próxima versión beta.

Eche un vistazo aquí: Pad numérico de Xcode con error decimal

Edit: Para aquellos que tienen ese problema con un campo de text tal vez esto debería ayudarle:

Desde los Foros de Desarrolladores de Apple bye Popeye7 – Entonces todos los créditos para él

¡Encontré una solución para este problema! Tengo 3 aplicaciones que ahora están rotas, así que para mí … es un buen hallazgo. Encontró la solución en StackOverflow … combinó dos respuestas a una pregunta similar.

En mi caso, un usuario toca un elemento BarButtonItem y aparece un "alerta" o cuadro de dialog.

Veo que la gran diferencia está en cómo se asigna el UIAlertView. El "NEW WAY" muestra textfield y muestra el keyboard como debería.

Ahora puedo ver textField, ingresar text y funciona de la forma esperada. Agregar el "initWithFrame" de nuevo no tiene efecto en la location textField.

VIEJA FORMA….

 - (IBAction)addEntryTapped:(id)sender { [_editorTextView resignFirstResponder]; [self saveTextChanges]; [self dismissPopovers]; _prompt = [[UIAlertView alloc] initWithTitle:@"New Entry Title..." message:@"\n\n\n" // IMPORTANT delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"OK", nil]; _textField = [[UITextField alloc] initWithFrame:CGRectMake(17.0, 55.0, 250.0, 25.0)]; [_textField setBackgroundColor:[UIColor whiteColor]]; [_textField setPlaceholder:@"New Entry Title"]; _textField.borderStyle = UITextBorderStyleRoundedRect; _textField.autocapitalizationType = UITextAutocapitalizationTypeWords; _textField.autocorrectionType = UITextAutocorrectionTypeNo; [_prompt addSubview:_textField]; [_prompt show]; // set cursor and show [_textField becomeFirstResponder]; } 

NUEVA MANERA…

 - (IBAction) addEntryTapped:(id)sender { [_editorTextView resignFirstResponder]; [self saveTextChanges]; [self dismissPopovers]; _prompt = [[UIAlertView alloc] init]; _prompt.alertViewStyle = UIAlertViewStylePlainTextInput; UITextField *text = [_prompt textFieldAtIndex:0]; _textField = text; [_prompt setDelegate:self]; [_prompt setTitle:@"New Entry Title..."]; [_prompt setMessage:@""]; [_prompt addButtonWithTitle:@"Cancel"]; [_prompt addButtonWithTitle:@"OK"]; [_textField setPlaceholder:@"New Entry Title"]; _textField.autocapitalizationType = UITextAutocapitalizationTypeWords; _textField.autocorrectionType = UITextAutocorrectionTypeNo; [_prompt show]; // set cursor and show keyboard [_textField becomeFirstResponder]; } 

Mensaje fue editado por Popeye7 el 25/09/13 a las 12:25 PM

Mensaje fue editado por Popeye7 el 25/09/13 a las 12:33 PM

Esto desapareció para mí después de eliminar las preferences de iOS Simulator de ~ / Library / Preferences.

Vaya a ~ / Library / Preferences Elimine "com.apple.iphonesimulator.plist" en la papelera.

Estado

Parece que las restricciones de AutoLayout de UISearchBar que se establecen en el file .xib están causando este problema. Si hay algunas restricciones networkingundantes o conflictivas que no fueron capturadas por el comstackdor, puede causar un error de dibujo y arrojar estos errores.

  1. Vaya al file .xib que tiene el UISearchBar
  2. Haga clic en UISearchBar y vaya al Inspector de tamaño (se parece a una regla, generalmente en el lado derecho con las properties del control)
  3. Uno por uno, click cada restricción y mire para ver dónde están; ninguna restricción debe medir la misma propiedad. Por ejemplo, en el mío, tenía una restricción que mide desde la parte superior del control hasta la parte superior de la vista, y otra restricción que mide desde la parte inferior del control hasta la parte superior de la vista.
  4. ¡Elimina las restricciones ofensivas, crea y ejecuta! Si eso no funciona, es posible que desee comprobar las restricciones en los controles circundantes.

Este "context faltante" parece ser un error de iOS 7 y parece ocurrir solo para campos de text vacíos. Estoy usando una solución ligera en mis proyectos hasta que Apple arregló este problema (probablemente nunca;)).

 // or wherever - (void)viewDidLoad { if([textfield.text isEqualToString:@""] || textfield.text == nil) { textfield.text = @" "; } ... } - (BOOL)textFieldShouldBeginEditing:(UITextField *)theTextField { [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardDidShow:) name:UIKeyboardDidShowNotification object:nil]; return YES; } - (void)keyboardDidShow:(NSNotification *)notification { if([textField.text isEqualToString:@" "]) { textField.text = @""; } } 

… eso lo hizo por mí.

EDITAR: Necesitas implementar UITextFieldDelegate, por supuesto. EDIT 2: Desafortunadamente, no funcionó exactamente como esperaba. El error desaparece, pero el carácter de espacio en blanco no se elimina la mayoría del time … ¿Alguien tiene una solución para esto? EDIT 3: Estoy renunciando a ese tema. De esta forma, no cubre todos los casos de uso de UITextField y disminuye el UX.