我尝试了滚动视图的多种实现方式来处理键盘的存在,包括苹果自己的。我无法让他们工作。
我有一个视图,当不显示键盘时不需要滚动,但是一旦文本字段是第一个响应者并且键盘显示了,某些内容就需要滚动。
请注意,唯一可编辑的文本字段是屏幕上的第一个文本字段,因此,我不需要滚动视图即可取消隐藏任何内容-我只需要在屏幕的上半部分具有滚动功能,而仅在显示键盘时才需要。
这是我所能接近的:
我可以成功注册键盘通知。加载时,我将滚动视图和内容大小设置为视图的整个高度。当键盘显示时,我将滚动视图的大小调整为原始高度减去键盘高度:
scrollView.frame = CGRectMake(0, 0, 320, 416 - kbSize.height);
在隐藏状态下,我只需重置即可:
scrollView.frame = CGRectMake(0, 0, 320, 416);
这几乎可行。除非显示了键盘,否则,如果我向下滚动到视图的底部(保持键盘处于显示状态),然后使用其返回键隐藏键盘,则在滚动视图调整大小时,会出现一个不雅的“跳转”回到顶部屏幕的没有平滑的动画滚动来调整滚动视图的大小。
有任何想法吗?与Apple的实现相比,我认为我对此很在行,但这是我得到的最接近的实现。
最佳答案
是的,就像贾斯汀·鲍尔森(Justin Paulson)所说,但这是代码
[UIView animateWithDuration:0.3 animations:^{
self.scrollView.frame = newFrame;
}];