2011-08-26 58 views
10

我有一个视图,其文本字段的范围从屏幕顶部到屏幕底部。显然,底部文本字段在弹出时被键盘覆盖,所以我开始摆脱这个问题。ScrollRectToVisible不能正常工作

我注册在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

设置contentSize,确保宽度和高度都不为零。然后从contentInset高度加或减,直到它工作。 scrollView.contentSize = CGSizeMake(kbSize.width,kbSize.height); scrollView.contentInset = UIEdgeInsetsMake(0,0,kbSize.height - 250,0); //(顶部,左侧,底部,右侧) –

回答

25

This是一个类似的帖子,其中scrollRectToVisible:工作不正常,并且有一个解决方案确保contentSize设置正确。希望有助于!

+0

为什么scrollRectToVisible:不起作用? –

+0

@Yheheesha因为'UIScrollView'只会在其大小和contentSize的大小差别足够的情况下(即contentSize比[[UIScrollView frame]大小长50点] ,你可以向下滚动50个点但在此情况下,我们想滚动更多的滚动键盘上方的文本,所以我们让'UIScrollView'相信还有更多的东西要显示,我们要做的是增加'contentSize'。 – dadude999

+1

虽然答案被重定向到其他链接,帮助我解决了,我忘了添加底部添加到子视图添加滚动视图,contentSize宽度是完美的,但高度为0!谢谢:) – KiranJasvanee

1

也取消选中ViewController的顶部酒吧