向上滚动屏幕以在键盘上方显示TextView

时间:2010-05-24 19:10:29

标签: iphone keyboard uitextview

我认为我错过了一些明显的东西,并希望得到答案。

我有一个带有2个部分的分组tableView的视图,每个部分有一行和一个textView,行335和140的高度。这允许一个带有圆角的盒子在键盘出现时键入文本(140高度部分)当键盘被解除时,一个漂亮的盒子可以阅读更多文字(注释);大多数时候,使用没有键盘。

我还在屏幕底部添加了一个工具栏,向上滚动键盘上方。工具栏上的按钮可以取消键盘。键盘上下使用通知以及keyboardWillShow方法中的以下代码,最后一部分可以正常工作:

[UIView beginAnimations:@"showKeyboardAnimation" context:nil];
[UIView setAnimationDuration:0.50];
self.view.frame = CGRectMake(self.view.frame.origin.x,
                             self.view.frame.origin.y,
                             self.view.frame.size.width,
                             self.view.frame.size.height - 216);
[UIView commitAnimations];

但是使用上面的代码,tableView的2个部分保持未展开状态,只有工具栏和键盘移动。使用以下代码(在以前的帖子中找到),工具栏和tableView部分都会移动。

[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.50];

CGRect rect = self.view.frame;
rect.origin.y -= 216; 
self.view.frame = rect;

[UIView commitAnimations];

现在我知道我必须调整数字以获得我想要的所有内容,但我的第一个问题是这两部分代码在第二部分而不是第一部分中移动的两组代码之间有何实质性的不同?工具栏也随第二个代码一起移动。

第二个问题是,我是否能够将较小的高度部分从屏幕上滚动到键盘上方,同时将工具栏向上移动216个?

由于

2 个答案:

答案 0 :(得分:1)

我可能在这里遗漏了一些东西,但是在第一段代码中,你将高度改为216.在第二段代码中,你在y方向上将整个视图的原点改为216

根据您在IB中设置框架的方式,如果您不允许它沿该方向移动,则第一段代码可能无法移动它。在检查器窗口中检查您的设置。

当您说“未注册”时,您指的是他们没有更改主视图中的位置是否正确?这与实际滚动不同(您可以通过更改滚动值来实现)。

你可能想在这里查看隐藏的抽屉示例,因为它们将视图推入和推出主视图,有点像工具栏,我认为这就是你所要求的。整个“滚动”的事情让我失望了。

http://cocoawithlove.com/2009/05/intercepting-status-bar-touches-on.html

答案 1 :(得分:0)

从记忆中,像是

tableView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight