2

HTMLページをロードするWebビューがあるアプリケーションがあります。読み込んでいる html ページには、その中に 5 ページが含まれています。実際、webview をスクロールすると、webview のscrollViewDidScroll:デリゲート メソッドが呼び出され、オフセットをチェックして webview のスクロール方向を取得します。

Web ビューを右にスクロールすると、コンテンツ オフセットが取得され2、html の次のページに移動します。webview を再度右にスクロールすると、コンテンツ オフセットが表示され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];
    }        
}
4

3 に答える 3

2

左/右のパンを検出するには、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 以外の値を使用できます。

于 2013-05-29T09:17:57.547 に答える