Подтвердить что ты не робот

UISearchBar CGContext ERROR

У меня есть UISearchBar внутри представления, всякий раз, когда я нажимаю на него, после появления клавиатуры -

после -(BOOL)searchBarShouldBeginEditing:(UISearchBar *)searchBar

он отправляет это на консоль:

< Ошибка > : CGContextSetStrokeColorWithColor: недопустимый контекст 0x0. Эта является серьезной ошибкой. Это приложение или используемая им библиотека использует недействительный контекст и тем самым способствует общему ухудшение стабильности и надежности системы. Это уведомление является любезность: пожалуйста, исправьте эту проблему. Это станет фатальной ошибкой в предстоящее обновление.

Он повторяет ту же ошибку. Я задаюсь вопросом, что конкретно может быть проблемой?

Я считаю, что существует контекст NULL, но что он должен делать с UISearchBar? Тпй.

4b9b3361

Ответ 1

Это известная проблема, над которой работает Apple. Должен быть исправлен в следующей бета-версии.

Посмотрите здесь: Xcode Числовая панель с десятичной ошибкой

Изменить: для тех, у кого есть эта проблема с текстовым полем, возможно, это должно помочь вам:

Из форумов разработчиков Apple bye Popeye7 - Итак, все кредиты ему

Я нашел исправление для этой проблемы! У меня есть 3 приложения, которые теперь сломаны, поэтому, для меня... это хорошая находка. Нашел решение на StackOverflow... объединил два ответа на аналогичный вопрос.

В моем случае пользователь забирает barButtonItem и появляется "предупреждение" или диалоговое окно.

Я вижу большую разницу в том, как распределяется UIAlertView. "NEW WAY" имеет текстовое поле, показывающее и поднимающее клавиатуру так, как должно.

Теперь я могу видеть textField, вводить текст, и он работает так, как я ожидаю. Добавление "initWithFrame" обратно не влияет на размещение текстового поля.

СТАРЫЙ ПУТЬ....

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

Сообщение было отредактировано Popeye7 - 9/25/13 в 12:25

Сообщение было отредактировано Popeye7 - 9/25/13 в 12:33

Ответ 2

Это исчезло после удаления настроек iOS Simulator из ~/Library/Preferences.

Перейдите к ~/Library/Preferences Drop "com.apple.iphonesimulator.plist" в корзину.

Stateful

Ответ 3

Похоже, что ограничения UISearchBar AutoLayout, установленные в файле .xib, вызывают эту проблему. Если есть избыточные или конфликтующие ограничения, которые не были пойманы компилятором, это может вызвать ошибку чертежа и выбросить эти ошибки.

  • Перейдите в файл .xib с UISearchBar
  • Нажмите на UISearchBar и перейдите к Инспектору размеров (выглядит как линейка, обычно с правой стороны с свойствами управления)
  • Один за другим, нажмите на каждое ограничение и посмотрите, где они находятся - никакие два ограничения не должны измерять одно и то же свойство. Например, по моему, у меня было одно ограничение, измеряющее верхнюю часть элемента управления в верхней части представления, и другое ограничение, измеряющее нижнюю часть элемента управления в верхней части представления.
  • Удалите любые нарушения, создайте и запустите! Если это не сработает, вы можете проверить ограничения на окружающие элементы управления.

Ответ 4

Эта вещь "недостающего контекста" кажется ошибкой iOS 7, и, похоже, это происходит только для пустых текстовых полей. Я использую облегченное обходное решение в своих проектах, пока эта проблема не будет исправлена ​​Apple (так, вероятно, никогда;)).

// 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 = @"";
    }
}

... это сделало это для меня.

РЕДАКТИРОВАТЬ: Конечно, вам нужно реализовать UITextFieldDelegate. EDIT 2: К сожалению, он не работал точно так, как я ожидал. Ошибка исчезла, но символ пробела не удаляется большую часть времени... Кто-нибудь получил решение для этого? EDIT 3: Я отказываюсь от этой проблемы. Этот способ не перекрывает все варианты использования UITextField и уменьшает UX.