如何在显示键盘时决定滚动哪个UIScrollView

时间:2013-05-28 08:32:49

标签: ios objective-c uiwebview uiscrollview

在我的iOS应用中,我有一个覆盖整个屏幕的常规UIScrollView。这包含顶部的UIView(带有一些标题图片,工具和其他内容),并且在UIWebView下面填充了一些网页内容(博客条目和评论)。

当关注Web视图的其中一个文本字段,从而显示键盘时,Web视图会滚动以将输入字段放在键盘上方。问题是标题不会移开,从而覆盖输入字段。

所以我的问题是;如何在显示键盘时告诉滚动视图滚动的代码?似乎回退到某些默认行为,并滚动保存输入字段的UIWebView。我想改为滚动父UIScrollView

我试图在.scrollEnabled上将UIWebView设置为NO,但这不会改变任何内容。 UIWebView甚至不应该具有滚动功能,因为我将UIWebView(以及主.contentSize的{​​{1}})的高度设置为其高度内容,每次填充Web视图时。

我怎样才能做到这一点?或者我是否必须手动滚动?

3 个答案:

答案 0 :(得分:2)

您应该注册键盘通知,我不知道是否可以解决问题,但请看一下:Apple doc about keyboard
我通过这种方式你可以在屏幕上用键盘滚动滚动视图,但我想webview也会响应,因为它已经注册了键盘通知,也许你也可以重新注册它来听这种通知。

答案 1 :(得分:0)

不要滚动内容以移动内容。要么做两件事之一: -

1:将所有内容放在容器视图中,并使用UIView动画将所有内容移动。这就是我做的。

2:将所有内容放在单独的滚动视图中,然后使用[scrollView setContentOffset:offset animated:YES];将其向上移动。虽然说实话,这是一种古老的方法,我不推荐它

这有意义吗?

答案 2 :(得分:0)

仅供参考

来自Apple文档:

  

重要提示:您不应该嵌入UIWebView或UITableView对象   UIScrollView对象。如果这样做,可能会导致意外行为   因为两个对象的触摸事件可能混淆错误   处理。