2013-11-14 2 views
7

Кто-нибудь когда-либо сталкивался с проблемой, что UITableView нужно долгое нажатие, чтобы вызвать метод didSelectRowAtIndexPath?UITableView требуется долгое нажатие, чтобы выбрать строку

+1

@iPatel Спасибо за мгновенный ответ, он работает ~ – keywind

+1

@keywind: принять ответ iPatel, если он решит вашу проблему – manujmv

ответ

20

Если вы использовали любой жест распознаватель попробовать удалить его и проверить, вызвало ли это проблему или нет?

Другой мудрый

Не уверен, но проблема может быть в UITableView имеет delaysContentTouches повернулся ON. Поверните это OFF, так что касания быстрее проникают в ячейки.

0

Вы должны добавить UILongPressGesture к виду своей сотовой ячейки, и при пожаре просто вызовите didSelectRowAtIndexPath (лучше будет вызывать другой метод - не стандартный метод UITableViewDelegate) из вашего класса, который использует UITableViewDelegate.

Я предлагаю вам создать собственный протокол, унаследованный от UITableViewDelegate, добавить туда метод для долгого режима поведения прессы и наслаждаться. Нечто похожее на:

@protocol LongPressTableViewCellDelegate <UITableViewDelegate> 
- (void)tableView:(UITableView *)tableView didLongTapCell:(UITableViewCell *)cell; 
@end 

Ваш делегат в этом случае будет принимать не стандартные UITableViewDelegate, но этот. Также вам нужно создать собственную ячейку (унаследованную из UITableViewCell) и добавить там свойство delegate (id), которое будет использоваться при длительном нажатии.

Также может быть ситуация, что стандартная didSelectRowAtIndexPath уволит до вашего длительное нажатия будет стрелять, поэтому я предлагаю вам отключить стандартное поведение выбора для просмотра таблицы:

_tableView.allowsSelection = NO; 
+0

Он не хочет, чтобы длинный пресс, он пытается чтобы избавиться от него –

2

У меня была точно такая же проблема:

  • Я использовал Tap Gesture распознаватель для управления различных действий в моем View Controller
  • Я хотел классический кран (короткий щелчок), чтобы вызвать метод didSelectRowAtIndexPath, но только длительное нажатие работает по умолчанию

Мое решение, чтобы выбрать ячейку в таблице View коротким отводом (пресса):

  • Выберите Tap Gesture распознаватель в вашем раскадровку
  • Перейти к инспектору атрибутов и снимите флажок «Отменено в виду»
+0

Это была моя проблема. Флаг называется «cancelsTouchesInView», который имеет смысл. – n13

1

В моей ситуации я имел UITapGestureRecognizer на мой взгляд, для сокрытия моей клавиатуры.

Это решило проблему:

tap.cancelsTouchesInView = false 
Смежные вопросы