UIWebViewでボタンタップでスクロールさせる

2012-02-10 13:55

よくスクロールボタンをおいているアプリがあるので
つけてみようと思って調べた。

UIWebViewはJavascriptを動かせるので
知識がある方はカスタマイズも容易にできますな。

- (IBAction)tapDown
{
    int height = webView.scrollView.contentSize.height;
    if (height == 0) {
        return;
    }
    NSString *currPageOffset = [webView stringByEvaluatingJavaScriptFromString:@"window.scrollY;"];
    int currentPageMaxScroll = height - webView.frame.size.height;
    int currentPageOffset = [currPageOffset intValue];
    int targetOffset;
    if (currentPageOffset < currentPageMaxScroll) {
        targetOffset = currentPageOffset+300;
        if (targetOffset > currentPageMaxScroll){
            targetOffset = currentPageMaxScroll;
        }
    } else {
        return;
    }
    NSString *script = [NSString stringWithFormat:@"window.scrollTo(0,%d);", targetOffset];
    [UIView beginAnimations:@"scrollPage" context:nil]; {
        [UIView setAnimationCurve:UIViewAnimationCurveLinear];
        [UIView setAnimationDuration:0.18];
        [UIView setAnimationDelegate:self];
        [webView stringByEvaluatingJavaScriptFromString:script];    
    }
    [UIView commitAnimations];
}

スクロール幅や速さなどはユーザーが自由に変えれた方がよさそう。
・・だが断る。

参考: