Вы, очевидно, используете это в сочетании с UITableView
. Во-первых, если вы хотите поддерживать взаимодействие с пользователем, txtFields должны быть подпредставлением ячейки contentView
, а не backgroundView.
Предполагая, что объект txtFields является подвидом contentView
, давайте посмотрим на соединения.
У tableView есть метод cellForRowAtIndexPath:
, в котором вы либо возвращаете новую ячейку, либо переработанную ячейку. В самом низу этой ячейки добавьте:
NSLog(@"textFields=%@ delegate=%@", cell.txtFields, cell.txtFields.delegate);
assert(cell.txtFields.delegate == cell); // lets make sure this is proper
Если на самом деле присутствуют оба аргумента, теперь вы знаете, что объект txtFields находится в правильном контейнере (contentView
), что свойство работает и что делегат установлен в ячейку.
Если с этим все в порядке и у вас не появляется клавиатура при нажатии, то, скорее всего, что-то еще накладывает txtFields - какой-то другой прозрачный вид и он ест касания.
В этом случае вы должны создать небольшое демонстрационное приложение, используя класс MyCell, даже с одной жестко закодированной ячейкой, которая демонстрирует проблему, а затем загрузить это (заархивированное) в свою учетную запись DropBox, где другие, такие как я, могут взглянуть на него и найти проблема.
person
David H
schedule
12.09.2012
cellForRowAtIndexPath
? Потому что у вас есть много экземпляров этой ячейки. Не могли бы вы показать часть, где вы программно устанавливаете делегата? - person hol   schedule 13.09.2012canBecomeFirstResponder
вMyCell
? - person ilmiacs   schedule 13.09.2012textFieldAction:
с мероприятием по внутренней отделке или каким-либо другим мероприятием? Потенциально может привести к конфликтному/переопределяющему поведению. - person ilmiacs   schedule 13.09.2012