2009-08-06 25 views
0

Total nooob ici. J'essaie de comprendre comment mettre en œuvre une transition d'un UIWebview à un autre avec un balayage et encore être en mesure de faire défiler/zoom w/dans chaque webview. Chaque vue Web doit répondre normalement à toutes les touches/gestes sauf si un balayage est détecté et la limite de la vue/contenu est sur le bord correspondant de l'écran (comme une vue de défilement de pagination).UIWebview glisse vers un autre UIWebiew

Mon contenu est une chaîne html issue d'un objet de données.

Des conseils seraient appréciés. Merci.

+0

Si le UIWebView peut gérer des touches, vérifier ma réponse à cette question http://stackoverflow.com/questions/1242197/i-want-to-implement-the-flip-touch -event-in-iphone montre comment détecter les balayages – Daniel

Répondre

2

On dirait que mettre UIWebview dans un UIScrollview fonctionne très bien dans l'iPhone 3.0 - 'Doh !!!

+0

Apple recommande d'éviter cela car les événements tactiles peuvent se confondre entre le scrollview et les webviews. Votre kilométrage peut varier. – zekel

1

Il peut y avoir des raisons de placer un UIWebView dans un ScrollView, mais le fait de prendre en charge BOTH et le défilement dans UIWebView n'en fait pas partie. Le UIWebView gère simplement le défilement sur la page et le contrôleur de vue qui le possède peut prendre en charge le balayage pour passer à autre chose comme un autre contrôleur:

1) Dans le viewController qui possède l'outil WebView la méthode UIGestureRecognizerDelegate:

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

Cela permet au geste de reconnaissance vous implémentez dans votre webViewController également obtenir des gestes de la UIWebView. Sinon, UIWebView les consomme tous et ne les transmettra pas à vous.

2) Pour faire une distinction entre un balayage et le défilement sur une page. Sur l'outil de reconnaissance de gestes que vous ajoutez à UIWebView, vous définissez le nombre de touches nécessaires pour être appelé "Glisser" à 2 ou 3. Cela permet de faire défiler un doigt sur une page et de renvoyer un SwipeGesture lorsque 2 ou 3 doigts sont utilisés. Faites-le quelque chose comme ceci:

UISwipeGestureRecognizer *swipeGR; 
swipeGR = [[[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleSwipeLeft)] autorelease]; 
swipeGR.direction = UISwipeGestureRecognizerDirectionLeft; 
swipeGR.delegate = self; 
swipeGR.numberOfTouchesRequired = 2; 
[myWebView addGestureRecognizer:swipeGR];