У меня есть настраиваемая панель инструментов с кнопкой «Готово» для вспомогательного представления ввода в моем текстовом представлении. Когда нажимается эта кнопка «Готово», я хочу отказаться от текстового представления первого респондента, поэтому я вызываю:
[textView resignFirstResponder];
Это вызовет ошибку:
Thread 1: Program received signal: "EXC_BAD_ACCESS".
при нажатии кнопки «Готово» при отображении автокоррекции (см. изображение ниже). Ошибка до сих пор даже я называю:
if ([textView isFirstResponder] && [textView canResignFirstResponder]) [textView resignFirstResponder];
Кажется, что текстовое представление является первым респондентом и может быть уволено, но я не могу отказаться от него. Как я могу решить эту ошибку? Спасибо.
Изменить 1: я все еще хочу включить автокоррекцию.
Изменить 2: взгляните на изображение захвата ниже.
Редактировать 3: после включения Zombies
в настройках схемы зарегистрированное сообщение:
-[TIZephyrCandidate wordOriginFeedbackID]: message sent to deallocated instance 0x52bbc50
но я не знаю, что означает это сообщение и что делать дальше.
Изменить 4: метод увольнения первого респондента будет вызываться при нажатии кнопки «Готово», внутри кнопки добавляется цель и действие следующей строкой кода:
[doneButton addTarget:self action:@selector(resignAllFirstResponders) forControlEvents:UIControlEventTouchUpInside];
который resignAllFirstResponders
:
- (void)resignAllFirstResponders
{
...
if ([textView canResignFirstResponder] && [textView isFirstResponder])
[textView resignFirstResponder];
...
}
wordOriginFeedbackID
экземпляруTIZephyrCandidate
, который уже был выпущен. Теперь мы пытаемся выяснить, почему это вызывает увольнение с видимым всплывающим окном автозамены. Где вызывается этот метод относительно текстового представления? - person Mark Adams   schedule 16.12.2011TIZephyrCandidate
и почему оно отправляетсяwordOriginFeedbackID
в ответ на то, что текстовое представление отказывается от статуса первого респондента. У вас естьUITextViewDelegate
метод,-textViewDidEndEditing:
реализован? - person Mark Adams   schedule 16.12.2011- (void)textFieldDidEndEditing:(UITextField *)textField
, но есть другие делегаты текстового представления, которыми являются- (void)textViewDidBeginEditing:(UITextView *)textView
,- (void)textViewDidChange:(UITextView *)textView
и- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
. - person Protocole   schedule 16.12.2011