Intereting Posts
Приложение с навигационным управлением TabBar и методом TableView didselectrowatindexpath Масштабирование UIWebView не такое же, как Safari? что не так в iPad под управлением iOS 9.2.1 и iPhone под управлением iOS 9.2.1 на Wi-Fi и сотовых сетях.? Белая вспышка, когда setImageWithUrl отображает кешированное изображение Как SnapChat отправляет данные другим устройствам? iOS NSString Flatten Html, сохраняя метки абзаца как очистить удаленное уведомление iOS iOS – Прокрутка TextView вверх, когда она находится в ячейке таблицы Вырастите UIImageView, в то время как UILongPressGestureRecognizer активен Преобразование NSURL из строки Обновление заголовка заголовка раздела UITableView при непрерывном повторе UIStepper Использовать анимацию Unity в приложении IOS : сообщение отправлено на освобожденный экземпляр 0x174222220, но почему? Xamarin.Forms.WebView.Navigating событие, поднятое на iOS для внутренней навигации Основная анимация не является интерактивной при компиляции с iOS 11 SDK

UITableViewCell касается субвью без выбора ячейки

У меня есть собственный tableviewCell с UIImageView imgView внутри. Я добавил UITapGestureRecognizer в imgView, так что я могу изменить изображение imgView всякий раз, когда я нажимаю на него. Однако, когда я нажимаю didSelectRowAtIndexPath , также запускается didSelectRowAtIndexPath . Я хочу:

  • При нажатии снаружи imgView: Trigger didSelectRowAtIndexPath
  • При нажатии внутри imgView: Block didSelectRowAtIndexPath , просто вызовите обратный вызов жестов, чтобы изменить изображение imgView.

Функция обратного вызова уже вызывается при нажатии внутри imgView, но я не могу заблокировать didSelectRowAtIndexPath в этом случае. Я много часов искал, но пока не нашел решение. Я использую цель-c . У кого-нибудь есть идеи для моей проблемы? Благодарим всех!

Обновить

Наконец, я узнал, в чем моя ошибка.

 UITapGestureRecognizer* tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(onFavouriteIconTapped:)]; tapGesture.cancelsTouchesInView = NO; // this should be YES by default [_ivImageView addGestureRecognizer:tapGesture]; 

Просто установите cancelsTouchInView = YES исправьте мою проблему. Если значение YES, событие touch будет потребляться с помощью ivImageView, а ячейка не будет выбрана. Надеюсь, это поможет кому-то, у кого такая же проблема.

Твой подход прекрасен. Селектор жестов нажатия не вызван, вероятно, потому, что вы, возможно, не включили пользовательское взаимодействие UIImageView.

imageView.userInteractionEnabled = TRUE;

Значение по умолчанию для userInteractionEnabled равно NO, для UIImageView.

После того, как ваш селектор начнет звонить, вы получите желаемое поведение, то есть при щелчке imgView, переключатель выбора жестов вызывается и на ощупь за пределами imgView didSelectRowAtIndexPath будет вызван. Это соответствует правилам цепи отправителя iOS.

@SHN, вы говорите правильно. Может быть, @meaholik, вы пропустили эту линию.

 imageView.userInteractionEnabled = TRUE; 

Вы также можете проверить эту ссылку .

Надеюсь, это поможет вам. 🙂