Кнопка UI на ячейке UItableView не активируется - PullRequest
1 голос
/ 09 августа 2011

Я добавил uibutton в ячейку в удобном для просмотра виде. Я хочу, чтобы эта кнопка была нажата и взаимодействовала с пользователем. Я добавил эту строку кода в класс реализации ячейки.

readMore = [[UIButton alloc]initWithFrame: CGRectMake(180, 50, 67, 25)];
[readMore addTarget:self action:@selector(readMoreClic:) forControlEvents:UIControlEventTouchUpInside];
[readMore setImage:[UIImage imageNamed:@"readmore.png"] forState:UIControlStateNormal];      
[self addSubview:readMore];

проблема в том, что он не нажат (он всегда находится в выделенном состоянии после выбора ячейки). Я попробовал: -

1- [self setSelectionStyle:UITableViewCellSelectionStyleNone];
2- cell.userInteractionEnabled = NO

но я по-прежнему выделяю ячейки и подсвечиваю синим цветом, а кнопка не нажимается. даже после того, как я выбрал

[self setSelectionStyle:UITableViewCellSelectionStyleGray]

кто-нибудь, помогите, плз ТНХ

[обратите внимание, у меня есть textView в той же ячейке, и это позволяет взаимодействие (выберите и скопируйте)] [я использую xcode 4 с iOS 4.3]

Ответы [ 3 ]

1 голос
/ 09 августа 2011

попробовать другое управляющее событие?:

[readMore addTarget:self action:@selector(readMoreClic:) forControlEvents:UIControlEventTouchDown];
0 голосов
/ 09 августа 2011

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

CGRect reuseableRect = CGRectMake(20, 290, 260, 37);

self.actionButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
self.actionButton.frame = reuseableRect;

[self.actionButton setTitle:@"Initialize" forState:UIControlStateNormal];
[self.actionButton addTarget:nil action:@selector(performAction) forControlEvents:UIControlEventTouchUpInside];
[self addSubview:self.actionButton];

На самом деле, я сделал это:

self.actionButton = [[UIButton alloc] initWithFrame:reuseableRect];

, но это не сработало.поэтому я изменил его на

self.actionButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];

. resueableRect - это просто CGRect, который я использовал на протяжении всей инициализации представления.

как и для трех строк вашего предыдущего решения, первого:

[self setSelectionStyle:UITableViewCellSelectionStyleNone];

он выполняет некоторые настройки для tableView и его ячеек, поэтому он не повлияет на кнопку

на вторую:

cell.userInteractionEnabled = NO;

это не такНастройка кнопки также, более того, поскольку ячейка является суперпредставлением кнопки, эта строка предотвращает любые взаимодействия с пользователем.

третья также ничего не делает с кнопкой, поэтому я рекомендуюВы удаляете их все, если задумывались над настройкой кнопки

0 голосов
/ 09 августа 2011

Вам не нужно ничего делать со стилем выделения или userInteractionEnabled.Убедитесь, что readMoreClic: выглядит так:

-(void)readMoreClic:(id)sender
{
}
...