UIPanGestureRecognizer не переключается в состояние «Конец» или «Отмена», если пользователь панорамировал x и y в отрицательном направлении. - PullRequest
13 голосов
/ 16 декабря 2010

У меня небольшая проблема с 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
}

1 Ответ

0 голосов
/ 15 мая 2014

Линия

[self addGestureRecognizer: pan];

выглядит неправильно для меня.

Похоже, вы создаете распознаватель жестов из UIView, а не UIViewController. Таким образом, если представление будет удалено, оно и распознаватель жестов исчезнут.

Лучше создать распознаватель жестов из UIViewController. Кроме того, UIViewController должен быть направлен на опознаватель.

...