Все, что вам действительно нужно сделать, это принять протокол делегирования UITextView. Убедитесь, что ваши экземпляры UITextView доступны для редактирования, тогда следующий метод позволит вам сделать то, что вам нужно
- (BOOL)textViewShouldBeginEditing:(UITextView *)textView {
// call whatever methods you want from here, including the method linked in your gesture recognizer;
return NO; // this makes sure you don't edit anything, if that is the case you want
}
Вы должны иметь возможность делать все, что захотите, поскольку эта строка вызывается каждый раз, когда вы нажимаете на редактируемый текстовый вид. Если вам нужен доступ к информации о ячейке, в которой она находится, вы можете найти ее, позвонив в суперпредставления. Например, если вы внедрили свой textView в contentView ячейки, textView.superview.superview
вернет ячейку, в которой она находится. Первый вызов superview возвращает contentView, а второй - ячейку. Вызов другого суперпредставления даст вам tableView. Я надеюсь, что это помогает.
РЕДАКТИРОВАТЬ: получить путь индекса довольно просто, если вы можете найти ячейку, в которую встроен textView. Предполагая, что textView является подпредставлением содержимого viewView ячейки, вы получите путь индекса.
UITableViewCell *cell = textView.superview.superview;
// you will get warnings on that. because you're calling superview, it expects it to be
// a UIView instance, but if you call NSLog(@"%@", textView.superview.superview), it will
// return UITableViewCell, so you can ignore the warning. anyway, assuming you have a
// reference to your tableView, you find the index path with the next line
NSIndexPath *indexPath = [myTableView indexPathForCell:cell];
// then call the didSelect method
[self tableView:myTableView didSelectRowAtIndexPath:indexPath];
Если вы встраиваете свой textView в нечто отличное от contentView, это не сработает, вам просто нужно будет добавлять или вычитать вызовы superview в операторе NSLog, пока не найдете ячейку. Но это должно сделать это для вас