исключение bad_Access при наборе в UITextView - PullRequest
0 голосов
/ 31 декабря 2011

Я не знаю, что не так с этим кодом;когда я начинаю печатать в UITextView, программа завершается с исключением exc_Bad_Access.

UIView *toolbar = [[UIView alloc] initWithFrame:CGRectMake(0, 430, 320, 44)];
toolbar.backgroundColor = [UIColor lightGrayColor];
UITextView *sendTextView = [[UITextView alloc] initWithFrame:CGRectMake(10, 9, 240, 26)];
sendTextView.backgroundColor = [UIColor whiteColor];
sendTextView.inputAccessoryView = toolbar;
sendTextView.layer.cornerRadius = 12.0;
[toolbar addSubview:sendTextView];
[self.view addSubview:toolbar];

Приведенный выше код находится внутри метода viewDidLoad UIViewController, который имеет UIScrollView в качестве своего представления.

1 Ответ

0 голосов
/ 31 декабря 2011

Размещение редактируемого текста на панели инструментов кажется странным.(Что вы делаете, когда пользователь хочет отредактировать его? Переместите его над клавиатурой? Я бы не ожидал, что панель инструментов переместит ИЛИ, чтобы содержать редактируемое поле.) Тем не менее, я был бы удивлен, если бы это вызвало EXC_BAD_ACCESS.

Ваша проблема, скорее всего, связана с кодом, который фактически выполняется при вводе текста, например с одним из методов делегирования текстового представления.Если вы ничего не можете найти там, пожалуйста, опубликуйте трассировку стека во время сбоя и код для метода, который фактически выполнялся в то время.

Обновление: После того, как вы указалив вашем комментарии я вижу, что вы устанавливаете панель инструментов в качестве вспомогательного представления ввода для sendTextView и , добавляя ее в представление контроллера представления.Я предполагаю, что здесь происходит то, что когда вы начинаете редактировать текстовое представление, текстовое представление добавляет панель инструментов к представлению клавиатуры, не удаляя ее сначала из представления контроллера представления.Данное представление может быть только частью одной иерархии представления одновременно;добавление его к вашему представлению и с использованием его в качестве вспомогательного представления ввода не будет работать.Если вы посмотрите на пример кода Apple для использования вспомогательного представления , вы обнаружите, что представление, используемое в качестве дополнительного устройства, не является частью обычной иерархии представления.

...