2012-04-11 10 views
10

私のUIWebViewは垂直スクロールを許可すべきではありません。しかし、水平スクロールが可能でなければなりません。UIWebviewで水平スクロールを有効にし、垂直スクロールを無効にするにはどうすればよいですか?

私はドキュメントを見てきましたが、ヒントは見つかりませんでした。

次のコードでは、両方のスクロール方向が無効になりますが、私は唯一の垂直無効にする:

myWebView.scrollView.scrollEnabled = NO; 

がどのように私はこの問題を解決するのですか?

答えて

30

水平スクロールを有効にして、スクロール垂直を無効にします。2行目を

myWebView.scrollView.delegate = self; 
[myWebView.scrollView setShowsVerticalScrollIndicator:NO]; 

-(void)scrollViewDidScroll:(UIScrollView *)scrollView 
{ 
    if (scrollView.contentOffset.y > 0 || scrollView.contentOffset.y < 0) 
     scrollView.contentOffset = CGPointMake(scrollView.contentOffset.x, 0); 
} 

垂直スクロールインジケータが非表示になります。 "scrollView.contentOffset.y <"が下にスクロールしようとすると、バウンスが無効になるかどうかを確認します。次のようにすることもできます:scrollView.bounces = NOで同じことをする! Rama Raoの答えを見るだけで、コードを垂直にスクロールしようとすると、scrollViewが(0.0)にリセットされ、水平位置から離れてしまうことがわかります。 、私はちょうど最後の2行を追加した

webview.scrollView.delegate = self; 
    [webview.scrollView setShowsHorizontalScrollIndicator:NO]; 

} 

-(void)scrollViewDidScroll:(UIScrollView *)scrollView 
{ 
    if (scrollView.contentOffset.x > 0) 
     scrollView.contentOffset = CGPointMake(0, scrollView.contentOffset.y); 
    if (scrollView.contentOffset.x < 0) 
     scrollView.contentOffset = CGPointMake(0, scrollView.contentOffset.y); 
} 

を:書き込み、

3
-(void) scrollViewDidScroll:(UIScrollView *)scrollView{ 
    if (scrollView.contentOffset.y>web.frame.origin.x) { 
     scrollView.contentOffset = CGPointMake(0, 0); 
    } 
} 

このようにすれば、問題を解決できます。以下のようにグローバルscrollviewオブジェクトを取る:

UIScrollView* scrollView =web.scrollView; 

セットデリゲートを-(void) scrollViewDidScroll:(UIScrollView *)scrollViewが呼び出されます、あなたが結果を得ることができ、その後のビューをスクロールします。両方のバージョンで確認しました(iOS 5 & iOS 4.2)

+0

、これが唯一のスクロールを制限しない、スクロール・インジケータを非表示になります。 – danh

+0

Kk今私は理解しました.Uは私が編集した上記のようなコンテンツサイズを設定できます。 –

+0

は0の代わりにwebviewフレームの高さより下の高さを指定します。 –

1

scrollEnabled == YESのままにしました。スクロール・ビューは、コンテンツ・サイズに基づいてスクロールを制限します。

scrollView.contentSize = CGSizeMake(1000, scrollView.bounds.size.height); 

幅がスクロールビュー内でスクロールされているものの幅に関連する必要がありますだけで横スクロールを可能にするには、このようなcontentSize何かを設定します。

+0

このコードは、iOS5.0のスクロールを制限しません –

+0

こんにちは。私はtablecellでwebviewを持っています。私はそれが横スクロールであることを望む。しかし、垂直方向にスクロールするときは、テーブルを無視してスクロールする必要があります。 – Durgaprasad

3

がフル動作させるために

myWebView.scrollView.delegate = self; 
[myWebview.scrollView setShowsHorizontalScrollIndicator:NO]; 

-(void)scrollViewDidScroll:(UIScrollView *)scrollView 
{ 
    if (scrollView.contentOffset.x > 0) 
     scrollView.contentOffset = CGPointMake(0, scrollView.contentOffset.y); 
} 

PEACE:

は、垂直方向のスクロールを有効にして、水平スクロールを無効にしますpnizzleのように書くと、右から左にスクロールすることはできませんが、左から右にスクロールすることはできません。私が思う

幸運

+0

タッチ。しかし、スクロールビューが前方にスクロールできない場合、どのように後方にスクロールすることができますか?あなたは決して右に行かなかった家から出ることはできません。 contentOffsetがすでに0以上に設定されているスクロールビューをプログラムで追加しない限り、コードが表示されます。 – pnizzle

関連する問題