2010-11-14 11 views
0

J'écris une application iPad dans laquelle je fais une utilisation intense d'un UIWebView à l'intérieur d'un UIViewController.UISwipeGestureRecognizer perpendiculaire à UIWebView Défilement: Comment éviter les balayages diagonaux?

Je suis en train d'attacher quelques actions pour balayer les reconnaisseurs de mouvements. Ils détectent les balayages gauche et droit. Étant donné que mon affichage Web défile vers le haut et vers le bas, il est très facile d'effectuer un balayage horizontal et de faire défiler la vue Web vers le haut ou vers le bas, ce qui finit par échouer le détecteur de mouvements.

Alors est-il possible d'éviter ce comportement? Peut-être détecter le début du balayage horizontal et verrouiller la position verticale UIWebView?

Merci!

Répondre

0

Vous pouvez intercepter l'appel continueTrackingWithTouch: withEvent et renvoyer sélectivement NO - ou peut-être même annuler le balayage.

E.g. quelque chose comme

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

où 'trop diagonale' pourrait être aussi simple que de vérifier si le début place & place actuelle sont trop non orthogonale (par exemple dx = firstX - LASTx, dy = Firsty - Lasty; len2 = dx * dx + dy * dy -.. qui est seulement permis un certain rapport relatif à la zone = dx * dy

Merci,

Dw

+0

le problème est, le UISwipeGestureRecognizer s'annule le suivi quand il trouve le geste trop diagonale, je veux exactement le contraire. Cette méthode annule-t-elle l'annulation automatique? –

+0

Non - étant donné que le [super ..] retournera "NO". Cependant, vous pourriez être méchant - et simplement changer ci-dessus pour toujours revenir un OUI et voir ce qui se passe? –

+0

Toujours pas bon. J'expérimente avec des alternatives, comme utiliser un UIScrollView au lieu de la reconnaissance gestuelle. Cela m'a apporté quelques nouveaux problèmes, rapportés ici: http://stackoverflow.com/questions/4200563/loadhtmlstring-wont-fire-while-uiscrollview-is-scrolling. Le comportement n'est pas exactement le même, mais les deux représentent quelques défis que je n'ai pas réussi à surmonter jusqu'à présent. Donc je vais devoir continuer à essayer. Quoi qu'il en soit, merci pour l'aide, Dirk. –