2010-08-09 53 views
2

我有一个嵌入在UIScrollView UIWebView。 webView被调整大小,以便滚动视图管理所有的滚动(我需要控制滚动)。UIScrollView与嵌入式UIWebView后不滚动

在webView中,我通过'-webkit-user-select:none'禁用了userSelection。

除了一个烦人的细节,一切都工作正常。当我在开始滚动大约一秒之前按住内容时,scrollView将不会滚动。我最好的猜测是,它与用户选择有关。时间大致与复制/粘贴/放大显示通常所需的时间相同,这通常也会禁用滚动。

我对如何解决这个问题的想法已经不多了。每一个帮助将不胜感激!

谢谢!

编辑:问题的另一个方面是,非滚动实际触发JS-Eventhandler(单击,mousedown,mouseup)在我的webView内导致令人惊讶的应用程序行为。用户放下手指,等待,滚动,没有任何反应,移除她的手指,这被认为是一种点击,从用户的角度来看,这种感觉是错误的。

+1

嗨,我试图用UIScrollView内的UIWebView实现同样的事情。你可以请你发表一些代码样本,你如何实现这一目标?干杯, – 2011-06-22 14:25:37

回答

1

此问题已经无关。从iOS 5.0开始,UIWebView基于真实的UIScrollView,并通过属性公开了该UIScrollView。改为使用它。

并且不要再混淆UIScrollViews中嵌入的UIWebViews。文件明确建议不要这样做。

Relevant Documentation

1

我猜想发生了什么事情是在短暂的持续时间后,scrollview不再将触摸解释为在视图上,而是将触摸传递给它的内容视图。

您是否尝试过延迟scrollview的内容?这将基本上告诉滚动视图延迟对触摸事件采取行动,而是短暂监视触摸,并且如果触摸移动,则它将其识别为用于滚动的轻扫手势。如果它不移动,它最终会将触摸传递给它的子视图。

scrollView.delaysContentTouches = YES; 

我认为,即使这样,在滚动视图沿着响应者链传递触摸事件之前有一个标准的延迟时间。如果持有时间过长,则自然会认为它是按下事件,而不是滚动事件。

+0

delaysContentTouches已被设置为YES。我没有效果地切换它。 – 2010-08-09 15:01:12

+1

如果您上面关于捕获点击的网络视图的评论是正确的,则表示滚动视图正沿着触摸事件传递,因为您在定时持续时间内没有移动手指。这就是它应该做的,否则它将如何处理web视图中的实际点击?如果标准时间不够长,你必须自己处理触摸事件,这是一大堆蠕虫。 – iwasrobbed 2010-08-09 15:12:03

+0

如果你不想让webview处理触摸,你应该将它的'userInteractionEnabled'设置为NO。 – iwasrobbed 2010-08-09 15:19:34