UIGestureRecognizer проведите и удерживайте - PullRequest
0 голосов
/ 07 апреля 2011

Я пытаюсь реализовать эффект прокрутки меню. Если пользователь делает один удар (в любом направлении), я буду перемещать один элемент для каждого удара. Это работает очень хорошо, используя UISwipeGestureReconizer, но если пользователь продолжает удерживать палец на экране после пролистывания, я хочу продолжать прокручивать его, пока палец не поднимется.

Кажется, я бы хотел объединить UISwipeGestureRecognizer с UILongPressGestureRecognizer для достижения этой цели. После успешного пролистывания (UISwipeGestureRecognizer) включите UILongPressGestureRecognizer и начните прокрутку, пока палец не поднимется (UILongPressGestureRecognizer заканчивается).

Проблема в том, что событие UILongPressGestureRecognizer не происходит после успешного пролистывания.

Вот пример:

// Create single swipe recognizer to recognize right swipes
swipeRecognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleSingleSwipeFrom:)];
swipeRecognizer.delegate = self;
[_gestureView addGestureRecognizer:swipeRecognizer];
[swipeRecognizer release];

// Create long press recognizer to recognize right press and holds
longPressRecognizer = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(handleSwipeAndHoldFrom:)];
longPressRecognizer.delegate = self;
[longPressRecognizer setMinimumPressDuration:0.5];
[longPressRecognizer setEnabled:NO];
[_gestureView addGestureRecognizer:longPressRecognizer];
[longPressRecognizer release];

- (void)handleSingleSwipeFrom:(UISwipeGestureRecognizer *)recognizer {

    if ([recognizer state] == UIGestureRecognizerStateEnded) {
        // Move one item in direction based on recognizer.direction
        [_longPressGestureRecognizer setEnabled:YES];
    }
}

Если после проведения пальца держать палец на экране, событие UILongPressGestureRecognizer никогда не вызывается. Любые идеи о том, как я могу сделать это?

1 Ответ

0 голосов
/ 07 апреля 2011

Попробуйте реализовать UIGestureRecognizerDelegate и используйте этот метод:

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer {
    return YES;
}

Это позволит двум работать одновременно. Вам нужно будет добавить код в дескриптор пролистывания и удерживать метод , хотя, чтобы убедиться, что он запускается только после завершения пролистывания.

Приветствия

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...