UISearchBar CGContext ERROR

henTdev picture henTdev · Jul 22, 2013 · Viewed 19.9k times · Source

I have a UISearchBar inside a view, whenever I tap on it, after the keyboard comes up -

after -(BOOL)searchBarShouldBeginEditing:(UISearchBar *)searchBar

it sends this to the console:

<Error>: CGContextSetStrokeColorWithColor: invalid context 0x0. This is a serious error. This application, or a library it uses, is using an invalid context and is thereby contributing to an overall degradation of system stability and reliability. This notice is a courtesy: please fix this problem. It will become a fatal error in an upcoming update.

It repeats the same error. I am wonderring what exactly could be the problem?

I believe there is a NULL context out there but what it has to do with a UISearchBar? tnx.

Answer

Henning Schulz picture Henning Schulz · Jul 23, 2013

It´s a known issue on which Apple is working on. Should be fixed in the next beta release.

Have a look here: Xcode Number pad with decimal error

Edit: For those who have that issue with a textfield maybe this should get you around:

From Apple Developer Forums bye Popeye7 - So all credits to him

I have found a fix for this issue! I have 3 apps that this is now broken on, so, to me... this is a good find. Found the solution on StackOverflow... combined two answers to a similar question.

In my case, a user taps a barButtonItem and an "alert" or dialog appears.

I see the big difference is in how the UIAlertView is allocated. The "NEW WAY" has the textField showing and brings up the keyboard as it should.

I am now able to see the textField, enter text and it works the way I expect it to. Adding the "initWithFrame" back in has no affect on the textField placement.

OLD WAY....

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

NEW WAY...

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

Message was edited by Popeye7 on 9/25/13 at 12:25 PM

Message was edited by Popeye7 on 9/25/13 at 12:33 PM