Вы имеете обрабатывать событие водопроводную .. С помощью этого кода tapGesture .numberOfTapsRequired = 1
OR
Для этого вам необходимо встроить его в свой UITableViewCell. Но нет необходимости создавать пользовательскую ячейку. Вот основная идея о том, что вы хотите сделать:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
UITextView *comment = [[UITextView alloc] initWithFrame:CGRectMake(cell.frame.origin.x, cell.frame.origin.y, cell.frame.size.width, tableView.rowHeight)];
comment.editable = NO;
comment.delegate = self;
[cell.contentView addSubview:comment];
[comment release];
}
return cell;
}
Вы, конечно, нужно установить RowHeight, если вы не хотите стандартную 44pt высоты, которая поставляется вместе с клеткой. И если вам нужны реальные ячейки, вам нужно добавить свою собственную логику, так что только ячейка, которую вы хотите, представляет собой textView, но это основная идея. Остальное - ваше, чтобы настроить ваш фитинг. Надеюсь, что это поможет
EDIT: чтобы обойти textView, чтобы добраться до вашей камеры, есть два способа сделать это.
1) вы можете сделать пользовательский класс TextView и перезаписать touchesBegan, чтобы отправить сообщение супер:
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
[super touchesBegan:touches withEvent:event];
}
это будет посылать событие прикосновения к его надтаблице, который был бы ваш Tableview. Учитывая, что вы не хотите создавать пользовательские UITableViewCells, я думаю, вы, вероятно, тоже не хотите создавать собственный класс textView. Это приводит меня к выбору второй.
2) при создании textView удалите comment.editable = NO ;. Нам нужно сохранить его редактируемым, но исправим это в методе делегата.
В вашем коде, вы хотите, чтобы вставить метод TextView делегата, и мы сделаем всю работу оттуда:
EDIT: изменение этого кода для использования с UITableViewController
- (BOOL)textViewShouldBeginEditing:(UITextView *)textView {
// this method is called every time you touch in the textView, provided it's editable;
NSIndexPath *indexPath = [self.tableView indexPathForCell:textView.superview.superview];
// i know that looks a bit obscure, but calling superview the first time finds the contentView of your cell;
// calling it the second time returns the cell it's held in, which we can retrieve an index path from;
// this is the edited part;
[self.tableView selectRowAtIndexPath:indexPath animated:NO scrollPosition:UITableViewScrollPositionNone];
// this programmatically selects the cell you've called behind the textView;
[self tableView:self.tableView didSelectRowAtIndexPath:indexPath];
// this selects the cell under the textView;
return NO; // specifies you don't want to edit the textView;
}
If это не то, что вы хотели, просто дайте мне знать, и мы вас разобрали.
Почему нельзя использовать длинный распознаватель жестов нажатия? – user3182143
показать свою кодировку для помощи – user3182143
@ user3182143 Существует не много кодирования. UITextView создается в storyBoard. В cellForRowAtIndexPath я добавляю некоторые ссылки, используя атрибут attributeText.addAttribute (NSLinkAttributeName, value: linkAddress, range: linkWordRange); А затем просто назначьте атрибутText для textView. И мне нужно, чтобы моя ссылка была легко открыта, нажав. –