0

我有一个显示网页的 UIWebView。问题是我只希望它显示网页的一部分。我尝试使用[[_menuWebView scrollView] setContentOffset:CGPointMake(0, 100)];将内容偏移量设置为我想要的位置,但问题是我不希望用户能够滚动网页的其余部分。我也无法将网页设置为不可滚动,因为我需要能够看到的部分比可用空间略大。有没有办法:

  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,这就是为什么您可以将您设置UIViewController为 的代表UIScrollView。因此,您可以实现一个名为的方法,在该方法scrollViewDidScroll:中检查是否UIWebView达到了它的 y 偏移量,如果是 -> 不让它滚动超过该点。

这是我用过的一个例子:

@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 回答