我有一个应用程序,其中有一个 web View ,可以在其中加载 HTML 页面。我正在加载的 html 页面包含 5 个页面。实际上,当我滚动 webview 时,我的 webview 的 scrollViewDidScroll:
委托(delegate)方法被调用,我在其中检查偏移量以获取 webview 滚动的方向。
当我将 webview 向右滚动时,我得到的内容偏移量为 2
并且它移动到 html 的下一页。当我再次向右滚动 Web View 时,它会将内容偏移量显示为 0
并移至上一页。
当方向为右/左时,我想在 webview 上调用 JavaScript 方法。
这是我的代码:
-(void)scrollViewDidScroll:(UIScrollView *)scrollView
{
NSLog(@"self.webview.scrollView.contentOffset.x:%f",self.webview.scrollView.contentOffset.x);
NSLog(@"%d",lastContentOffset);
NSString *val = @"getPageNo()";
NSString *val1= [webview stringByEvaluatingJavaScriptFromString:val];
int pageno = [val1 intValue];
NSLog(@"%@",val1);
if ( self.webview.scrollView.contentOffset.x==0)
{
//this means webview moves in left direction
NSLog(@"%f",self.webview.scrollView.contentOffset.x);
NSLog(@"%d",lastContentOffset);
NSString *showpageno = [NSString stringWithFormat:@"showPage('%d')",pageno-1];
[webview stringByEvaluatingJavaScriptFromString:showpageno];
}
else if ( self.webview.scrollView.contentOffset.x>0)
{
//this means webview moves in right direction
NSLog(@"%f",self.webview.scrollView.contentOffset.x);
NSLog(@"%d",lastContentOffset);
NSString *showpageno = [NSString stringWithFormat:@"showPage('%d')",pageno+1];
[webview stringByEvaluatingJavaScriptFromString:showpageno];
}
}
最佳答案
只需在scrollViewDidScroll中使用以下代码即可检测左/右平移。
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
CGPoint velocity = [[scrollView panGestureRecognizer]velocityInView:scrollView.superview];
if (velocity.x == 0) {
return;
}
if (velocity.x < -1) {
// Scrolling left
} else if (velocity.x > 1) {
// Scrolling Right
}
}
如果您想要更大的灵活性,可以使用 1 和 -1 之外的其他值。
关于iphone - iOS 中从左向右滚动时如何获取 Web View 中的滚动方向?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16809241/