0

Webページを表示するUIWebViewがあります。問題は、Web ページの一部のみを表示することです。コンテンツ オフセットを必要な場所に設定するために使用しようとし[[_menuWebView scrollView] setContentOffset:CGPointMake(0, 100)];ましたが、問題は、ユーザーが Web ページの残りの部分をスクロールできないようにすることです。また、表示する必要がある部分が使用可能なスペースよりもわずかに大きいため、Web ページをスクロールできないように設定することもできません。次のいずれかの方法はありますか:

  1. スクロールできないように設定できるように、ビューのサイズを変更して小さな部分のみを表示します
  2. ユーザーがページの上部までスクロールできず、下部までスクロールしすぎないように、何らかの方法でスクロール境界を設定します。

前もって感謝します!

編集:

回答のコードを使用して、UIWebView が一番上をスクロールしないようにしました。問題は、一番下をスクロールしないようにすることです。このコードを使用して、 contentOffset が底に達した場合にあるべき場所を確認します: _bottom_y = [[_menuWebView scrollView] contentSize].height - 20 - [_menuWebView frame].size.height;. NSLog _bottom_y を実行すると、ボトム オフセットがあるべき場所として 68 が表示されます。問題は、私が知っている上部オフセットが 115 であり、それが機能することです。上記のコードの何が問題になっていますか? なぜこの奇妙な番号が表示されるのですか?

ありがとう

4

1 に答える 1

1

これはあなたの質問に対する良い答えになると思います。UIWebViewその構造には が含まれているため、 をのデリゲートにUIScrollView設定できます。したがって、がその y オフセットに達したかどうかを確認し、そうであれば -> そのポイントを超えてスクロールさせないというメソッドを実装できます。UIViewControllerUIScrollViewscrollViewDidScroll:UIWebView

これが私が使用した例です:

@interface ViewController : UIViewController <UIScrollViewDelegate>

@property (weak, nonatomic) IBOutlet UIWebView *webView;

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    _webView.scrollView.delegate = self;
    [_webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://google.com"]]];
    _webView.scrollView.contentOffset = CGPointMake(0, 50);
}

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

@end

これが役に立てば幸いです、乾杯!

于 2013-09-15T05:42:39.277 に答える