【问题标题】:Set Scroll Boundaries UIWebView设置滚动边界 UIWebView
【发布时间】:2013-09-14 21:26:41
【问题描述】:

我有一个显示网页的 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 并且有效。上面的代码有什么问题?为什么它给我这个奇怪的数字?

谢谢

【问题讨论】:

  • 如果你想在底部也设置一个边界,那么你需要以不同的方式计算_bottom_y。 (_menuWebView.scrollView.contentOffset.y + _menuWebView.scrollView.bounds.size.height) 将是您的 _bottom_y。

标签: objective-c uiwebview


【解决方案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

希望这会有所帮助,干杯!

【讨论】:

  • 感谢您的建议。一个快速的美学问题:有没有办法固定侧面的滚动条,使其边界也相同。
  • 您的回答也造成了另一个问题。请查看编辑。
猜你喜欢
  • 1970-01-01
  • 2012-01-18
  • 1970-01-01
  • 2014-04-28
  • 2013-04-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多