2009-03-05 66 views
3

我已经在我的iPhone应用程序中嵌入了一个UIWebView,并且我想随时在页面上保留一个锁定的页眉和页脚DIV,并带有一个可滚动的中心DIV。iPhone上的可滚动div不使用2个手指?

我知道我可以使用UIView控件的页眉/页脚来做到这一点,但我希望页眉和页脚是HTML div,因为纯HTML/JS/CSS解决方案将更容易移植到Android/PalmPre/Adob​​eAir,它很快就会出现在我的待办事项列表中。

我可以做到这一点使用技术,如这里所提到的一个:

http://defunc.com/blog/?p=94

但是这需要用户使用2个手指滚动的div,这是不令人满意的我...

关于如何做到这一点的任何建议?

感谢,

布拉德

+0

我对你如何真正解决这个问题也很感兴趣,因为我可能还需要这样做。 – 2009-03-05 16:42:37

+0

单指滚动可以使用jscroll.js来实现。 ? – 2012-09-21 16:19:25

回答

1

可能是笨重的,但你可以重新定位页眉和页脚在DIV当用户滚动的顶部。这样你的主div不需要滚动。没有任何帮助(仍然)使用框架。

这是iPhone/touch中更令人恼火的浏览器问题之一,我希望您可以像正常浏览器那样专注于部分页面。

2

我不太熟悉UIWebView,所以这可能是一个完全愚蠢的建议。但是有没有什么能阻止你在页面上拥有三个UIWebViews?一个用于标题,一个用于身体,另一个用于页脚。因为分解听起来像是正确的想法。

0

对于仅CSS参考,Safari CSS Reference可能有你在找什么。您会特别感兴趣的是以“-webkit”或“-khtml”开头的任何内容,因为这些扩展属性仅适用于3D和触摸等WebKit。也应该适用于Android。

使用JavaScript,Introduction to WebKit DOM Programming TopicsWebKit DOM API Reference是指南。一定要看看the light-table demo一些复制和粘贴的JavaScript处理您的触摸,因为这就是我将如何解决这个问题。

2

这是你在找什么? Open this link on your iPhone device or simulator

index.html文件在正文正下方有“标题”,“容器”和“页脚”三个div元素,而所有的工作都在fixed.js文件中完成。该文件是通过取消对“touchmove”事件的正常动作固定在适当位置:

// Disable flick events 
    disableScrollOnBody : function() { 
     document.body.addEventListener("touchmove", function(e) { 
      e.preventDefault(); 
     }, false); 
    }, 

然后,很多工作进入了“touchstart”,“touchmove”和“touchend”事件创建事件监听器它们附在“容器”下的“内容”div中。逻辑归结为简单地上下移动“内容”div。

该解决方案是100%HTML/CSS/JavaScript,但是有一些WebKit专有的CSS和JavaScript可能会限制可移植性。在其他移动设备上工作可能需要稍微调整一下,但这将是一个很好的概念验证。

我没有创建这个很棒的示例项目,我只是将它引入社区的注意。欲了解更多信息和链接到压缩项目,阅读理查德“Doctyper”埃拉拉的整个帖子Fixed positioning in Mobile Safari

0

我已经在iphone上实现了iScroll,它非常流畅和快速,你可以做任何你想做的事情。缺点是,Android(1.6)拒绝滚动我想要的,有时会阻止其他JavaScript如果有的话。

0
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=0, minimum-scale=1.0, maximum-scale=1.0"> 
<div style="overflow: scroll"> 

将这些添加到您的html代码可能会解决您的问题。