我的视图包含从屏幕顶部到屏幕底部的文本字段。显然,当弹出键盘时,底部文本字段会被键盘覆盖,所以我开始摆脱这个问题。
我在viewDidLoad
方法中注册通知,然后在发送UIKeyboardDidShowNotification
时调用此方法:
- (void)keyboardWasShown:(NSNotification*)aNotification
{
NSDictionary* info = [aNotification userInfo];
CGSize kbSize = [[info objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].size;
UIEdgeInsets contentInsets = UIEdgeInsetsMake(0.0, 0.0, kbSize.height, 0.0);
scrollView.contentInset = contentInsets;
scrollView.scrollIndicatorInsets = contentInsets;
[scrollView scrollRectToVisible:activeField.frame animated:YES];
}
问题是什么都没有滚动,更不用说滚动到可见了。我在这里缺少什么?
我的所有文本字段都在滚动视图等内部。
提前致谢。
答案 0 :(得分:26)
This是scrollRectToVisible:
无法正常运行的类似帖子,并且通过确保contentSize
设置正确来解决问题。希望有帮助!
答案 1 :(得分:1)
同时取消选中ViewController的“顶栏”
答案 2 :(得分:0)
给以后的自己发信息:你的contentSize
宽度为0。
当 contentSize 的宽度为 0 时,scrollRectToVisible
无效。
此外,由于 AutoLayout,您的 contentSize
宽度为 0。
见https://developer.apple.com/library/archive/technotes/tn2154/_index.html
另外,这是因为您没有明确设置内容视图的宽度,而是在做一些愚蠢的事情,例如将内容视图居中在滚动视图中,而且可能是 UIScrollView
不聪明足以弄清楚在这种情况下如何在自动布局的上下文中设置 contentSize
。