我尝试了多种滚动视图的实现来处理键盘的存在,包括苹果自己的。我不能让他们中的任何一个工作。
我有一个在不显示键盘时不需要滚动的视图,但是一旦文本字段是第一响应者并且键盘显示,某些内容需要可滚动。
请注意,唯一可编辑的文本字段是屏幕上的第一个,因此我不需要滚动视图来取消隐藏任何内容 - 我只需要在屏幕的上半部分具有滚动能力,但仅在显示键盘时才需要。
这是我能得到的最接近的:
我可以成功注册键盘通知。加载时,我将滚动视图和内容大小设置为视图的全高。当键盘显示时,我将滚动视图的大小调整为原始高度减去键盘高度:
scrollView.frame = CGRectMake(0, 0, 320, 416 - kbSize.height);
在隐藏时,我只是将其重置:
scrollView.frame = CGRectMake(0, 0, 320, 416);
这几乎可以工作。除了,一旦显示键盘,如果我向下滚动到视图底部(保持键盘显示),然后使用它的返回键隐藏键盘,当滚动视图调整大小时,会有一个不雅的“跳转”回到顶部的屏幕。没有平滑的动画滚动来调整滚动视图的大小。
有任何想法吗?与 Apple 的实现相比,我认为我正在对此进行破解,但这是我所拥有的最接近的。