带嵌入式UIWebView的UIScrollView在保持后不滚动

时间:2010-08-09 12:15:44

标签: iphone uiwebview uiscrollview

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

在webView中,我通过'-webkit-user-select:none;'

禁用了userSelection

除了一个烦人的细节外,一切都很好。当我在开始滚动大约一秒钟之前按住内容时,scrollView将不会滚动。我最好的猜测是,它与userSelection有关。时间与复制/粘贴/放大器通常需要的时间大致相同,通常也会禁用滚动。

我对如何解决这个问题的想法不足。非常感谢每一位帮助!

谢谢!

编辑:问题的另一个方面是,非滚动实际上触发了我的webView中的JS-Eventhandler(click,mousedown,mouseup),这导致了令人惊讶的应用程序行为。用户将手指放下,等待,滚动,没有任何反应,移开她的手指,这被视为点击,从用户的角度来看感觉不对。

2 个答案:

答案 0 :(得分:1)

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

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

scrollView.delaysContentTouches = YES;

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

答案 1 :(得分:1)

此问题不再适用。从iOS 5.0开始,UIWebView基于真正的UIScrollView,并通过属性公开UIScrollView。改用它。

不要再乱用UIScrollViews中嵌入的UIWebViews了。该文件明确提出反对意见。

Relevant Documentation