2010-03-07 6 views
14

J'ai essayé de le désactiver en insérant:Comment désactiver le défilement horizontal d'UIWebview?

<meta name="viewport" content="width=320" /> 

dans ma chaîne HTML, et une douzaine de variations de ce qui précède, dans l'espoir vain que je viens foiré la syntaxe de l'étiquette ... mais rien ne semble arrêter UIWebView de défilement horizontal. Et pourtant, il y a des applications qui réussissent à faire cela (comme MobileRSS), et sans doute, puisqu'elles n'ont pas été rejetées, elles n'utilisent pas d'API privées.

Répondre

1

<meta name="viewport" content="width=device-width, user-scalable=no initial-scale=1.0" />

8

j'ai réussi finalement à résoudre ce problème. J'avais déjà essayé de définir la valeur de la largeur de la fenêtre, et cela n'a pas fonctionné. Qu'est-ce que le travail DID utilisait overflow: caché en conjonction avec la définition de la largeur de la fenêtre. Merci d'avoir répondu de toute façon.

4

Votre page Web doit avoir deux attributs: 1 - la balise META viewport et 2 - une largeur de 320px ou moins, y compris la marge et le remplissage.

Voici un squelette HTML5 très nu qui devrait permettre le défilement vertical et interdire le défilement horizontal, y compris le rebondissement horizontal. Ceci interdit également le zoom - il suppose que votre page Web devrait toujours être montrée 1-1 à l'utilisateur. Ceci est utile si vous utilisez un UIWebView pour afficher une interface utilisateur.

<!doctype html> 
<html> 
<head> 
    <meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1, user-scalable=0" /> 
    <style> 
     body {width:320px;margin:0;padding:0;} 
    </style> 
</head> 
<body></body> 
</html> 
1

Définir le délégué pour « (par webview.scrollView et sur iOS4 sur iOS5 en parcourant l'arborescence de sous-vue et en sélectionnant le UIScrollview sous-vue) UIScrollview s à la UIWebview soi» et en utilisant le code suivant:

-(void)scrollViewDidScroll:(UIScrollView *)scrollView{ 
    [scrollView setContentOffset:CGPointMake(0, scrollView.contentOffset.y)]; 
} 

Fonctionne parfaitement, pour une raison quelconque, mon code HTML débordait horizontalement sans aucun besoin. Cela le corrige.

+1

Je ne dirais pas que cela le répare; est plus comme un hack. Mais salut! si ça fait le boulot, qui s'en soucie? (Il ne le résout pas parce que votre contenu déborde toujours) –

29

Ma version, une solution commune:

- (void)webViewDidFinishLoad:(UIWebView *)webView { 

[webView.scrollView setContentSize: CGSizeMake(webView.frame.size.width, webView.scrollView.contentSize.height)]; 

} 
+3

Il est important que ce code soit placé dans -webViewDidFinishLoad: pas ailleurs (comme je l'ai fait pour viewDidLoad et je me cognais la tête contre le mur pendant un moment – igrek

+0

Merci beaucoup, cela a aidé à résoudre mon problème .. :) – NorthBlast

3

si le contenu WebView un mot qui a une longueur supérieure à la webView. vous devez casser cette chaîne. utiliser le code ci-dessous dans le div

mot-wrap: mot-clé;

Questions connexes