Интересная проблема с UITableViewCell и UITableView, есть решение? - PullRequest
1 голос
/ 18 июля 2009

У меня есть класс, унаследованный от UITableViewController, и это также корневой класс. Этот tableView содержит три пользовательских UITableViewCell s (загруженных из файла NIB и не разделенных на подклассы), и каждый UITableViewCell имеет один UITextField. Теперь, когда я реализую метод делегата

- (BOOL)textField:(UITextField *)textField
        shouldChangeCharactersInRange:(NSRange)range
        replacementString:(NSString *)string

Я не получаю ни одного события. Эта функция никогда не срабатывает, я пытался реализовать и другие методы делегатов, но ни один из них не срабатывает. Как запустить эти методы делегата?

Я также хочу переопределить функцию canPerformAction:sender: для этих UITextField s (которые являются частью UITableViewCell);
Как это сделать?

Ответы [ 2 ]

1 голос
/ 18 июля 2009

Метод textField:shouldChangeCharactersInRange:replacementString: является частью протокола UITextFieldDelegate, поэтому вам необходимо установить делегата для этих UITextField с.

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

UITextField *textField = [[UITextField alloc] initWithFrame:CGRectMake(x,y,w,h)];
[textField setDelegate:self];

Однако вы говорите, что загружаете UITableViewCell s из файлов XIB. Вы должны каким-то образом получить доступ к UITextField s внутри кода и вызвать для них метод setDelegate:. Вы можете сделать это, используя UIView 's subviews свойство. Например:

UIViewController *controller = [[UIViewController alloc] initWithNibName:@"foo" bundle:nil];
UITextField *textField = (UITextField *)[[controller.view subviews] objectAtIndex:0];

Хотя создание UITextField в коде намного проще и элегантнее, ИМХО.

Что касается переопределения метода canPerformAction:sender:, для этого вам потребуется подкласс UITextField.

0 голосов
/ 18 июля 2009

Является ли этот класс UITextFieldDelegate? Вы должны предоставить больше информации, источник и т. Д .... Тот факт, что вы не получаете никаких событий, заставляет меня думать, что проблема в NIB отсутствует. По какой-то причине я не использую IB или NIB, проблемы с отладкой становятся действительно сложными. Возможно, опубликуйте ваши XML

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...