Я добавляю UIPanGestureRecognizer к одному пользовательскому виду в моем контроллере представления.Конфликты UIPanGestureRecognizer
Я также использую MFSideMenu для скользящего меню, которое в своей структуре добавляет UIPanGestureRecognizer к основному навигационному окну NavigationViewController.view.
Иногда, когда я просматриваю внутри своего пользовательского представления, панорама фактически встречается в MavigationViewController.view.
Что вызывает эту проблему, является следующий код в реализации MFSideMenu от:
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {
if([gestureRecognizer isKindOfClass:[UIPanGestureRecognizer class]]) {
if([gestureRecognizer.view isEqual:self.rootViewController.view] &&
[self rootViewControllerPanEnabled])
{
return YES;
}
return NO;
}
}
Apperantely иногда (1 из 5-10), этот метод возвращает YES, где он должен вернуть NO, когда панорамирование на посмотри сам!
Проблема заключается в том, что вместо панорамирования пользовательского вида открывается скользящее меню.
Я в значительной степени пробовал все, что мог себе представить - это поведение просто не имеет никакого смысла.
ОБНОВЛЕНИЕ: проблема только в iOS 7 - см. Ниже мой ответ на исправление.
Я предполагаю, что ваш пользовательский вид добавляется к виду корня, поэтому он запуская gestureRecognizer в классе зрения корня. Я попытался бы увидеть, если вы можете установить переменную rootViewControllerPanEnable в корневом представлении на «Нет» в обработчике метода gesture делегата в вашем пользовательском классе (если время работы работает). – GuybrushThreepwood