iphone - iOS 中从左向右滚动时如何获取 Web View 中的滚动方向?

标签 iphone objective-c webview

我有一个应用程序,其中有一个 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/

相关文章:

iphone - 从 SearchBar 查询执行 NSRange 后抛出的异常

iphone - 快速进行 View 转换 - 你使用这个 hack 吗?

objective-c - 在 initWithCoder 中使用保留?

iphone - 如何知道应用程序是否已预先安装在 iOS 设备上?

html - WebView 中的背景图像显示在模拟器中,但不显示在设备上

iphone - 在 UIScrollView 上拖动图像

iphone - MPMoviePlayerController 停止 iPod 音乐播放

ios - 当没有后退按钮时,向 UINavigationController 添加左栏按钮项

android - Cookie 在 Android 的 WebView 中无法正常工作

android - webview android 中的 TLS/SSLv3