设置Scroll Boundaries UIWebView

时间:2013-09-14 21:26:42

标签: objective-c uiwebview

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

  1. 调整视图大小以仅显示一小部分,以便我可以将其设置为不可滚动
  2. 以某种方式设置滚动边界,以便用户无法滚动到页面顶部,也不会向下移动到底部。
  3. 提前致谢!

    修改

    我已经使用了答案中的代码来让UIWebView不滚动到顶部,问题是不要滚动到底部。我使用此代码来检查contentOffset应该在底部的位置:_bottom_y = [[_menuWebView scrollView] contentSize].height - 20 - [_menuWebView frame].size.height;。当我NSLog _bottom_y时,它会出现68,因为底部偏移应该是。问题是,我知道顶部偏移为115并且有效。上面的代码有什么问题?为什么它给了我这个奇怪的数字?

    谢谢

1 个答案:

答案 0 :(得分: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

希望这有帮助,欢呼!