使用css Multicolumns在UIWebView中对html进行分页时出错

时间:2011-03-03 12:43:06

标签: iphone objective-c cocoa-touch xcode ipad

这是我的问题:

我目前正在使用objective-c编写电子书阅读器,并希望使用multicolumns在我的webview中对我的xhtml文件进行分页。 不幸的是,当我向我的CSS添加Multicolumns时,我的html似乎只有2“页”长,这正是前两个

标签。 有谁知道我做错了什么?。

这里是用于将新设置注入我的css的代码:

NSString *varMySheet = @"var mySheet = document.styleSheets[0];";

NSString *addCSSRule =  @""
    "function addCSSRule(selector, newRule) {"
        "if (mySheet.addRule) {"
            "mySheet.addRule(selector, newRule);"       // For Internet Explorer
        "} else {"              
            "ruleIndex = mySheet.cssRules.length;"
            "mySheet.insertRule(selector + '{' + newRule + ';}', ruleIndex);"   // For Firefox, Chrome, etc.
        "}" // endif mySheet.addRule
    "}"; // end addCSSRule()    
NSString *insertColumns = [NSString stringWithFormat:@"addCSSRule('div', 'height: 370px; -webkit-column-width: 320px');"];



[wv_reader stringByEvaluatingJavaScriptFromString:varMySheet];

[wv_reader stringByEvaluatingJavaScriptFromString:addCSSRule];

[wv_reader stringByEvaluatingJavaScriptFromString:insertColumns];

对于滚动,我使用以下代码:

int i_scrollTo = ([AppState sharedInstance].i_myselectedPage -1) * wv_reader.frame.size.height;
[wv_reader stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"window.scrollTo(0,%d);", i_scrollTo]];

如果我没有在我的CSS中设置Multicolumns,那就完美了。

我还测试过,如果我的html在添加多列后以某种方式被切断,但是webview内容的NSLog显示,整个电子书都被加载了。 虽然我发现了最大的滚动高度,但是没有列它是 79061 ,并且在将列插入我的css之后它被减少为 424 由于某种原因我不知道知道。

有人可以帮我解决这个问题吗?我正在解决这个问题大约一个星期,但找不到解决方案。

提前谢谢。 特立独行

* UPDATE * * 水平滚动也不起作用,因为我的document.scrollWidth被卡在我的列的宽度上,我觉得这很奇怪。

1 个答案:

答案 0 :(得分:0)

https://github.com/fedefrappi/AePubReader

也许这个样本可以帮到你?