当键盘显示时如何禁止UIWebView的自动滚动

4
我有一个应用程序,使用PhoneGap(HTML5,JavaScript,非本地语言)。每当我在应用程序中单击TextArea时,会出现一个恶性错误,会移动屏幕上的某些元素(特别是,它会搞乱position:fixed的元素)。
为了解决这些问题,我希望能够禁用UIWebView在键盘弹出时滚动的功能,但我不确定如何做到这一点。
不确定是否清楚,但如何禁用UIWebView在键盘显示时的滚动?
2个回答

1
这对我有效:

body {
    position: fixed;
    top:0;
    overflow:hidden;
}

我正在使用iScroll,我不知道它在原生滚动中的表现如何。


1

我认为这是UIWebView中的一个错误(或者说缺失的功能?)。我通过在-keyboardWillShow:上保存textView.scrollView.contentOffset并在-keyboardDidHide:中将contentOffset设置为保存的值来解决了这个问题。

虽然仍然会看到它短暂地滚动,但比完全失去焦点要少干扰一些。

另一种选择是将长文本部分实现为本机UITextView,这样就不会发生这种不良行为。

编辑: 另一个解决方法是不使用contenteditable。如果您可以设计一个常规文本输入字段,那么滚动会缩放到当前选定的文本字段(这也是为什么contenteditable表现如此奇怪的原因,因为它找不到任何内容进行缩放)。此外,*!§*$之前/下一个键盘输入栏也再次变得有用。


原生的UITextView并不是一个真正的选择。另一种方法的跳动不太理想,但我想那可能是目前唯一可用的选择。谢谢。 - Anthony Tyler
我又想到了一个糟糕的解决方案。也许我们应该告诉所有人我们在“动画”功能上努力工作了(T_T)。 - auco
我最终选择了使用position: absolute并相应地进行调整。虽然不是最理想的解决方案,但看起来比较好。 - Anthony Tyler

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接