2013-03-27 4 views
3

У меня есть tableView с двумя кнопками в каждой строке, пользователь, конечно, может прокручивать, чтобы увидеть больше строк, или нажать кнопку, чтобы увидеть детали элемента.Цель c - Кнопка внутри таблицы просмотра таблицы предотвращения прокрутки

Проблема:

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

Как я могу предотвратить это? код, чтобы установить цели для кнопки это:

[cell.buttonLeft addTarget:self action:@selector(buttonTapped:) forControlEvents:UIControlEventTouchUpInside]; 
+1

Вы получаете такое же поведение при использовании дополнительного устройства для раскрытия информации, поэтому я считаю, что это стандартное поведение. Пользователю нужен способ отмены нажатия кнопки. Рассматривали ли вы использование аксессуара для раскрытия детали? –

ответ

4

Использование UITapGestureRecognizer вместо использования addTarget:

Пример:

UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 

UITapGestureRecognizer *tapGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(aMethod:)]; 
[button addGestureRecognizer:tapGestureRecognizer]; 
[button setTitle:@"Show View" forState:UIControlStateNormal]; 

button.frame = CGRectMake(0, 0, 160.0, 40.0); 
[cell.contentView addSubview:button]; 


-(void)aMethod:(UITapGestureRecognizer *)sender{ 

    if(sender.state == UIGestureRecognizerStateEnded) 
    { 
     NSLog(@"triggered"); 
    } 
} 
+0

Я предпочитаю использовать кнопку, любые другие предложения? – Eyal

+1

Я также использовал кнопку ,, просто добавил UITapGestureRecognizer, вместо того, чтобы добавлять код addTarget: .. thats it –

-1

Если вы используете IB, вы можете добавить кнопку в ячейку (в IB), измените свой тег, а затем добавьте цель и действие к кнопке с этим тегом.

UIButton *button = (UIButton *)[cell.contentView viewWithTag:1002]; 
    [button addTarget:self action:@selector(buttonTapped:) forControlEvents:UIControlEventTouchUpInside]; 
Смежные вопросы