我尝试过滚动视图的多种实现来处理键盘的存在,包括苹果自己的存在。我不能让他们中的任何一个工作。
我有一个视图,当键盘没有显示时不需要滚动,但是一旦文本字段是第一个响应者,键盘显示,一些内容需要滚动。
请注意,唯一可编辑的文本字段是屏幕上的第一个,因此我无需滚动视图以取消隐藏任何内容 - 我只需要在屏幕的上半部分滚动功能,但仅在显示键盘时才需要
尽可能接近:
我可以成功注册键盘通知。在加载时,我将我的scrollview和内容大小设置为视图的完整高度。当键盘显示时,我将滚动视图的大小调整为原始高度减去键盘高度:
scrollView.frame = CGRectMake(0, 0, 320, 416 - kbSize.height);
在隐藏中,我只是重置它:
scrollView.frame = CGRectMake(0, 0, 320, 416);
这几乎可行。除了,一旦显示键盘,如果我向下滚动到视图的底部(保持键盘显示)然后使用其返回键隐藏键盘,当滚动视图调整大小时,有一个不优雅的“跳跃”回到顶部的屏幕。没有平滑的动画滚动来调整滚动视图的大小。
有什么想法吗?与苹果公司的实施相比,我认为我正在制造这种产品,但它是我最接近的产品。
答案 0 :(得分:0)
是的,就像贾斯汀保尔森评论的那样,但这里是代码
[UIView animateWithDuration:0.3 animations:^{
self.scrollView.frame = newFrame;
}];
答案 1 :(得分:0)
我认为你可以在解雇之前修改滚动位置:
- (BOOL)textFieldShouldEndEditing:(UITextField *)textField {
// like this:
self.contentOffset = CGPointMake(0,0);
// you can animate the frame change here, or where you were doing it
[UIView animateWithDuration:0.2 animations:^{
scrollView.frame = CGRectMake(0, 0, 320, 416);
}];
return YES;
}