Я ответил на аналогичный вопрос здесь .Обычно при вызове:
[tableView selectRowAtIndexPath:path animated:YES scrollPosition:UITableViewScrollPositionNone];
табличное представление не запускает tableView:didSelectRowAtIndexPath:
для делегата табличного представления, поэтому, кроме того, вы вынуждены вызывать напрямую (и так как вы написали код в методе делегата, естьнет проблем):
[tableView.delegate tableView:tableView didSelectRowAtIndexPath:path];
Кроме того, ваше прохождение nil
для действия на самом деле не так, как распознаватели жестов, где это означает:
[[UITapGestureRecognizer alloc] initWithTarget:self action:nil];
Обычно вы делаете что-то подобное:
[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapRecognized:)];
Это в основном говорит распознавателю жестов вызывать метод tapRecognized:
при получении касания.Таким образом, в основном, чтобы обернуть все это (я предполагаю, что это в UITableViewController
или объект со свойством с именем tableView
, как UITableViewController
s по умолчанию).
-(void)tapRecognized:(UITapGestureRecognizer *)tapGR{
// there was a tap
CustomTextView *theTextView = (CustomTextView *)tapGR.view;
NSIndexPath *path = theTextView.indexPath;
[self.tableView selectRowAtIndexPath:path animated:YES scrollPosition:UITableViewScrollPositionNone];
[self.tableView.delegate tableView:self.tableView didSelectRowAtIndexPath:path];
}