UISwipeGestureRecognizer перпендикулярно UIWebView Scrolling: как избежать диагональных пролистываний? - PullRequest
0 голосов
/ 15 ноября 2010

Я пишу приложение для iPad, в котором я интенсивно использую UIWebView внутри UIViewController.

Я связываю несколько действий для распознавания жестов.Они обнаруживают как левый и правый удары.Так как мой веб-вид прокручивается вверх и вниз, очень легко попробовать горизонтальную прокрутку и заставить веб-просмотр немного прокручивать вверх или вниз, что в итоге приводит к сбою распознавателя жестов.

Так есть ли способизбежать этого поведения?Может быть, определить начало горизонтального пролистывания и зафиксировать вертикальное положение UIWebView?

Спасибо!

1 Ответ

0 голосов
/ 15 ноября 2010

Вы можете перехватить вызов continueTrackingWithTouch: withEvent и выборочно вернуть NO - или, возможно, даже отменить свайп.

например. что-то вроде

(BOOL)continueTrackingWithTouch:(UITouch *)touch withEvent:(UIEvent *)event
{
    if (... too diagonal to my taste) .. 
          return (NO);
    return [super continueTrackingWithTouch:touch withEvent:event];
}

где «слишком диагональ» может быть такой же простой, как проверка, если начальная и текущая точки слишком неортогональны (например, dx = firstX - lastX, dy = firstY - lastY; len2 = dx * dx + dy * dy который допускается только в некотором соотношении относительно площади = dx * dy.

Спасибо

Dw.

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