Я бы принял следующий подход, чтобы поддерживать взаимодействие как с UITextView, так и с UITableViewCell.
- Объявить ваш класс контроллера (я полагаю, UITableViewController?) Как делегат UITexView.
- Когда вы объявляете свой UITextView, установите контроллер табличного представления в качестве его делегата.
- Реализуйте один из методов UITextViewDelegate (например: - (void) textViewDidChangeSelection: (UITextView *) textView) в вашем контроллере табличного представления.m файл.
- Из этого метода вы можете манипулировать целевой ячейкой либо с помощью пользовательского кода, либо с помощью триггера tableView: (UITableView *) tableView didSelectRowAtIndexPath: (NSIndexPath *) делегировать метод через selectRowAtIndexPath: animated: scrollPosition:.
Ваш код может выглядеть следующим образом:
В файле .h контроллера таблицы:
@interface MyTableViewController : UITableViewController <UITextViewDelegate> { ...
...
}
В файле .m контроллера таблицы.:
UITextView *addressField = [[UITextView alloc] initWithFrame:CGRectMake(0, 0, 300, 75)];
[addressField setDelegate:self];
...
Затем реализуйте эту функцию, например (или любой другойтаблица UITextViewDelegate (функция):
- (void)textViewDidChangeSelection:(UITextView *)textView {
// Determine which text view triggered this method in order to target the right cell
...
// You should have obtained an indexPath here
...
// Call the following function to trigger the row selection table view delegate method
[self.tableView selectRowAtIndexPath:indexPath animated:YES scrollPosition:UITableViewScrollPositionNone]
}
Обратите внимание, что существуют другие альтернативы, такие как создание подклассов UITextView и работа с его сенсорными методами.Я бы порекомендовал использовать возможности, предоставляемые его протоколом делегатов.
Обратите также внимание, что может быть удобно объявить ваш UITextView или по крайней мере сослаться на него как на переменную экземпляра класса контроллера табличного представления.Это поможет вам легко отслеживать, какой адрес addressField был получен, и получить правильный indexPath.