iphone - UIScrollView + UIWebView = 没有滚动到顶部

标签 iphone uiwebview uiscrollview

这看起来像是一个可以有简单解决方案的问题,但我还没有找到任何可以导致它的方法。我在 UIScrollView 内部使用 UIWebView 并点击 statusBar (将内容滚动到顶部)不起作用。

我做了一个简单的测试应用程序来看看它是否真的是 UIWebViews 的错误。确实如此。

//  scrolls to top on status bar tap 
UIScrollView *sv = [[UIScrollView alloc] init];
sv.frame = CGRectMake(0, 0, 320, 480);
sv.contentSize = CGSizeMake(320, 1200);
[self.view addSubview:sv];
<小时/>
// doesn't scroll
UIScrollView *sv = [[UIScrollView alloc] init];
sv.frame = CGRectMake(0, 0, 320, 480);
sv.contentSize = CGSizeMake(320, 1200);

UIWebView *wv = [[UIWebView alloc] init];
wv.frame = CGRectMake(0, 0, 320, 100);
[sv addSubview:wv]; 

[self.view addSubview:sv];

所以,我想也许我可以禁用一些东西来使 UIWebView 不与scrollToTop混淆?或者某种解决方法也很好。

有什么想法吗?

最佳答案

我昨晚遇到了这个问题,直到我终于在评论的评论中找到了答案。 idea of that original post是当您将 UIWebView 添加到 UIScrollingView 时,您使用以下内容:

- (void) ensureScrollsToTop: (UIView*) ensureView {
    ((UIScrollView *)[[webView subviews] objectAtIndex:0]).scrollsToTop = NO;
}

这对我来说似乎很可疑,因为 UIWebView 的第一个 subview 声称是 UIScroller,它不是 UIScrollView 的子类。但是,由于 UIScroller 支持scrollsToTop 属性,因此强制转换只是为我们提供了一种绕过编译器警告的方法:

Class List:
    Class = UIScroller
    Class = UIView
    Class = UIResponder
    Class = NSObject
Supported Methods:
    ...
    Method _scrollToTop
    Method setScrollsToTop:
    Method scrollsToTop
    ...
Supported Properties:
    Property scrollsToTop

EDIT: Just another quick note about where this actually needs to occur: in the webViewDidFinishLoad callback. Calling it on UIWebView construction isn't good enough because at that time the UIWebView hasn't created it's child views yet, which are the ones causing the problem:

- (void)webViewDidFinishLoad:(UIWebView *) wv {    
    [self ensureScrollsToTop: wv];
}

编辑#2:

现在,在 iOS 5 中,如 iPhone OS: Tap status bar to scroll to top doesn't work after remove/add back 中所述使用 UIWebView 的新 @propertyscrollView,对于不使用低于 iOS 5.0 的部署目标的项目来说,无需实现 ensureScrollsToTop

关于iphone - UIScrollView + UIWebView = 没有滚动到顶部,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2175281/

相关文章:

iphone - 使用 AVAudioPlayer 逐个播放一组声音

html - 控制 iOS Mobile Safari 和/或 UIWebView 中的文本选择行为?

ios - UIScrollView 在 iOS7 中不滚动自动布局

ios - UIscrollview 不工作 ios swift

iphone - 如何创建无限滚动的UIScrollView?

ios - 如何检查 NSDocumentDirectory 中是否存在数据

iphone - UIImagepickercontroller-视频超过10分钟问题-IOS

ios - UIPageViewController 与多个 UIViewController 与标题和底栏

iphone - 图像在所有浏览器中加载,但在 UIWebView 中不加载

javascript - 在 UIWebView 中加载一个 javascript 文件