Примечание: пожалуйста, смотрите комментарии ниже, чтобы увидеть, хотя, хотя это решение работало для меня, оно все еще не может быть хорошей идеей.
Альтернативой созданию подкласса UITableView
или UITableViewCell
(и использованию таймера) было бы просто расширить класс UITableViewCell
категорией, например (используя ответ @ oxigen, в данном случае для ячейка вместо таблицы):
@implementation UITableViewCell (DoubleTap)
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
if(((UITouch *)[touches anyObject]).tapCount == 2)
{
NSLog(@"DOUBLE TOUCH");
}
[super touchesEnded:touches withEvent:event];
}
@end
Таким образом, вам не нужно переименовывать существующие экземпляры UITableViewCell
с новым именем класса (будет расширять все экземпляры класса).
Обратите внимание, что теперь super
в данном случае (это категория) относится не к UITableView
, а к его супер UITView
. Но фактический вызов метода для touchesEnded:withEvent:
находится в UIResponder
(из которых UITView
и UITableViewCell
являются подклассами), поэтому здесь нет никакой разницы.