11

私の UIWebView は垂直スクロールを許可しないはずです。ただし、水平スクロールは可能でなければなりません。

ドキュメントを調べましたが、ヒントが見つかりませんでした。

次のコードは両方のスクロール方向を無効にしますが、垂直方向のみを無効にしたい:

myWebView.scrollView.scrollEnabled = NO;

この問題を解決するにはどうすればよいですか?

4

6 に答える 6

34

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

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);
}

2行目は、垂直スクロールインジケーターを非表示にします。「scrollView.contentOffset.y<ゼロ」かどうかを確認すると、下にスクロールしようとしたときにバウンスが無効になります。次のこともできます:scrollView.bounces=NO同じことをします!! Rama Raoの答えを見るだけで、彼のコードは、垂直方向にスクロールしようとした瞬間にscrollViewを(0.0)にリセットし、それによって水平位置から離れてしまうことがわかります。これは良くありません。

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

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

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

平和

于 2012-09-25T01:21:42.100 に答える
4

完全に機能させるには、次のように記述します。

 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);
}

最後の 2 行を追加したのは、pnizzle のように書くと、右から左にはスクロールできず、左から右にはスクロールできないからです。

幸運を

于 2014-07-08T19:37:52.697 に答える
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)で確認しました

于 2012-04-11T04:55:04.277 に答える
1

scrollEnabled == YES のままにします。スクロール ビューは、コンテンツのサイズに基づいてスクロールを制限します。水平スクロールのみを許可するには、次のように contentSize を設定します。

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

幅は、スクロール ビュー内でスクロールされているものの幅に関連付ける必要があります。

于 2012-04-11T04:56:46.520 に答える