UISearchBar CGContext ОШИБКА

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

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

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

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

Это повторяет ту же ошибку. Мне интересно, в чем конкретно может быть проблема?

Я полагаю, что существует NULL- контекст, но какое это имеет отношение к UISearchBar? Тпй.

4 ответа

Решение

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

Посмотрите здесь: Xcode Number pad с десятичной ошибкой

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

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

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

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

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

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

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

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

НОВЫЙ СПОСОБ...

- (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 25.09.13 в 12:25

Сообщение отредактировал Popeye7 25.09.13 в 12:33

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

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

Stateful

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

  1. Перейдите к файлу.xib с UISearchBar.
  2. Нажмите на UISearchBar и перейдите к Инспектору размера (выглядит как линейка, обычно справа от свойств элемента управления)
  3. Один за другим, нажмите на каждое ограничение и посмотрите, где они находятся - никакие два ограничения не должны измерять одно и то же свойство. Например, у меня было одно ограничение, измеряющее от верхней части элемента управления до верхней части представления, и другое ограничение, измеряемое от нижней части элемента управления до верхней части представления.
  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, конечно. РЕДАКТИРОВАТЬ 2: К сожалению, это не сработало точно, как я ожидал. Ошибка исчезла, но символ пробела не удаляется большую часть времени... У кого-нибудь есть решение для этого? РЕДАКТИРОВАТЬ 3: Я сдаюсь по этому вопросу. Этот способ не покрывает все варианты использования UITextField и уменьшает UX.

Другие вопросы по тегам