Вы можете перехватить вызов 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.