2015-07-25 4 views
0

Я использую собственный подкласс MKButton, найденный here (который является подклассом UIButton).UIButton Interfering with UITableView

У меня есть UITableView с номером X UITableViewCell. Каждая из этих ячеек имеет один или несколько MKButton в таблицеView. Целью этих ячеек является открытие ссылки на веб-страницу при нажатии на любую из них.

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

Я хотел бы иметь возможность поддерживать iOS 7 и iOS 8, если это имеет значение.

Я осмотрелся и не смог найти много. Вот что я пробовал до сих пор:

  • Установка delaysContentTouches на YES.
  • Установка canCancelContentTouches в положение «ДА».
  • Подкласс UITableView и переопределение - (BOOL)touchesShouldCancelInContentView:(UIView *)view для возврата ДА;
+0

Где вы установили 'delayaysContentTouches'? на кнопках или на столе? – brandonscript

+0

Я установил его на 'UITableView' –

+0

ОК. Вы пробовали 'canCancelContentTouches = YES' в представлении таблицы? – brandonscript

ответ

0

Просто узнайте, перемещается ли таблица или нет, и нажмите кнопку.

-(BOOL)isTableViewMoving 
{ 
    return _tableView.isDragging || _tableView.isDecelerating; 
} 

-(void)didTapButton 
{ 
if (!isTableViewMoving) 
    //dostuff 
} 

EDIT:

Обнаружили еще лучшее решение: просто использовать UITapGestureRecognizer. По какой-то причине он работает лучше, чем touchUpInside.

Смежные вопросы