sni*_*kst 9 iphone cocoa-touch objective-c
我很难理解委托和对象继承(如果我可以使用这个词),我认为我需要一个简单的(或者我认为)的东西:在UIWebView中捕获scrollViewDidScroll事件并获得偏移(基本上,只是要知道如果滚动不在顶部/底部,那么我可以隐藏导航和标签栏).
有什么办法可以吗?我已经在我的视图控制器中使用UIWebviewDelegate来"shouldStartLoadWithRequest".也许我可以使用UIScrollViewDelegate如何使用scrollViewDidScroll?如果是,那怎么样?
我真的很难理解代表.我发布了一些文章,但实际上,我还是无法使用它们.
任何帮助或信息都很可爱.
先感谢您!
Ced*_*rie 13
要在UIWebView上检索滚动事件,我个人使用此代码来获取UIWebView内的scrollview:
- (void) addScrollViewListener
{
UIScrollView* currentScrollView;
for (UIView* subView in self.myWebView.subviews) {
if ([subView isKindOfClass:[UIScrollView class]]) {
currentScrollView = (UIScrollView*)subView;
currentScrollView.delegate = self;
}
}
}
Run Code Online (Sandbox Code Playgroud)
它正在发挥作用.您也可以使用它来调用[currentScrollView setContentOffset:offSet animated:YES];唯一的问题可能是不能通过Apple代码检查.我还不知道,因为我还处于编码阶段.
[更新]具有此代码的应用程序现在在应用商店中存在4个月,并由40,000个用户使用.我没有遇到任何麻烦[更新]
您可以使用以下方法来解决您的问题.
int pageYOffset = [[webViewObj stringByEvaluatingJavaScriptFromString:@"window.pageYOffset"] intValue];
int scrollHeight = [[webViewObj stringByEvaluatingJavaScriptFromString:@"document.documentElement.scrollHeight"] intValue];
[webViewObj stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"document.body.scrollTop =%d",scrollHeight]];
中有一个滚动视图UIWebView,但它 a) 不是 a UIScrollView,b) 是 Apple 认为是私有实现细节的东西(你也应该这样做)。我真的只有两个建议:
#2 的基本原理是加载一个假 URL,并让您的 Web 视图委托进程(并中止!)该加载。(这个问题在 Stack Overflow 上出现过几次。)
更新:
从 iOS 5 开始,现在有一个公共scrollView属性UIWebView可以用来自定义滚动行为。Web 视图的确切视图层次结构仍然是未记录的实现细节,但这为您提供了访问这一部分的认可方法。