У меня небольшая проблема с UIPanGestureRecognizer. Распознаватель не сообщает о UIGestureRecognizerStateEnded состояние, если пользователь переместился в верхний левый угол (означает отрицательные значения x и y направления)
Состояние меняется на UIGestureRecognizerStateEnded, если направление положительно, когда пользователь поднимает палец, но он просто перестает сообщать действия, если оба направления отрицательны или равны нулю.
Это плохо, потому что я скрываю некоторые виды наложения, пока пользователь перетаскивает что-то, и эти представления не возвращаются в случае сбоя.
Конечно, я мог бы настроить NSTimer для отображения наложения после некоторого время снова автоматически, но я не вижу очевидной ошибки в моем коде и Я хочу, чтобы он был чистым.
Я что-то пропустил? Ошибка Apple?
Инициализация выглядит следующим образом:
pan = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(panRecognized:)];
[self addGestureRecognizer:pan];
[pan release];
Функция обработки выглядит следующим образом:
- (void)panRecognized:(UIPanGestureRecognizer *)gestureRecognizer {
switch ([gestureRecognizer state]) {
case UIGestureRecognizerStateBegan:
// fade some overlaying views out
break;
case UIGestureRecognizerStateEnded:
case UIGestureRecognizerStateCancelled:
case UIGestureRecognizerStateFailed:
// fade in the overlays
break;
default:
break;
}
// handle panning
}