Хорошо, я немного смущен.
У меня есть подкласс UIScrollView, который является моей попыткой горизонтального прокручивания "табличного представления", такого как элемент пользовательского интерфейса. Сам UIScrollView настраивает UIGestureRecognizers, который он использует внутри себя, и, похоже, он выступает в роли делегата для этих UIGestureRecognizers. У меня также есть моя собственная настройка UIGestureRecognizer для моих горизонтальных элементов/ячеек таблицы и мой собственный набор классов в качестве делегата для моего собственного UIGestureRecognizer. Поскольку мой класс является подклассом UIScrollView, во время выполнения вызовы делегатов UIGestureRecognizer поступают в мой класс для встроенных UIGestureRecognizers UIScrollView и моих собственных UIGestureRecognizers. Немного о PITA, но мы можем обойти это, передавая те, которые нам не нужны.
-(BOOL) gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
{
if ([gestureRecognizer isKindOfClass:[UITapGestureRecognizer class]])
return NO;
else
{
if ([super respondsToSelector:@selector(gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer:)])
return [super gestureRecognizer:gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:otherGestureRecognizer];
else
return NO;
}
}
Проблема в том, что проверка [super respondsToSelector:@selector()]
возвращает YES, но когда я на самом деле называю ее return [super gestureRecognizer:gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:otherGestureRecognizer];
, я получаю следующее исключение
2012-08-31 12: 02: 06.156 MyApp [35875: 707] - [MyAppHorizontalImageScroller gestureRecognizer: shouldRecognizeSimultaneousWithGestureRecognizer:]: непризнанный селектор, отправленный в экземпляр 0x21dd50
Я бы подумал, что он должен показать
- [UIScrollView gestureRecognizer: shouldRecognizeSimultaneousWithGestureRecognizer:]
Но это может быть ОК. Но проблема в том, что он говорит, что он отвечает, а затем нет.
Другие два подпрограммы делегатов UIGestureRecognizer работают с этим кодом (очевидно, разные селекторы).
Спасибо за понимание.