我有一个视图,它的文本字段从屏幕的顶部到底部都有。很明显,底部的文本字段在键盘弹出时会被键盘覆盖,所以我着手解决这个问题。
我在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];
}
问题是什么都没有滚动,更不用说滚动到可见了。我在这里错过了什么?
我的所有文本字段都在滚动视图中,等等。
先谢了。
3条答案
按热度按时间o3imoua41#
This是一个类似的帖子,其中
scrollRectToVisible:
无法正常工作,有一个解决方案,确保contentSize
设置正确。希望有帮助!q7solyqu2#
给未来的自己发信息:您的
contentSize
宽度为0。当contentSize的宽度为0时,
scrollRectToVisible
不起作用。此外,由于使用了自动版式,
contentSize
宽度为0。参见https://developer.apple.com/library/archive/technotes/tn2154/_index.html
此外,这是因为您没有显式设置内容视图的宽度,而是做了一些愚蠢的事情,如在滚动视图中居中内容视图,也许是
UIScrollView
不够聪明,无法弄清楚如何在这种情况下在自动布局上下文中设置contentSize
。qni6mghb3#
我有一个UIScrollView可以在两个维度上滚动,它只有一个子视图。滚动视图的contentSize与子视图的边界大小不匹配,所以
scrollRectToVisible
(在子视图的坐标空间中使用提供的CGRect)不能滚动到正确的位置。转换坐标空间使它按预期工作: