ScrollRectToVisible无法按预期工作

时间:2011-08-26 17:22:57

标签: iphone objective-c xcode

我的视图包含从屏幕顶部到屏幕底部的文本字段。显然,当弹出键盘时,底部文本字段会被键盘覆盖,所以我开始摆脱这个问题。

我在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 个答案:

答案 0 :(得分:26)

ThisscrollRectToVisible:无法正常运行的类似帖子,并且通过确保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