iPhone:如何调整视图及其所有子项的大小(在键盘弹出的上下文中)?

时间:2011-11-23 01:39:47

标签: iphone keyboard uitextview

我有一个iPhone应用程序。该视图由两个子项组成:一个400像素高的tableview和一个大约80像素高的视图底部的uitextview。

我正在尝试在键盘可见时向上移动textview和tableview。我调整了“主”视图的大小以使其更小。为什么它的孩子看起来也不会调整大小? 我是否需要重新调整tableview的框架,并重新调整textview的框架?我只是想知道预期的行为是什么。我是否需要使用setNeedsLayout()或setNeedsDisplay?

我期望通过缩小“主要”视图的尺寸,它的孩子们会“缩小”并受到父视图的约束。看起来textview仍然在屏幕的底部。 tableview看起来是正确的(缩小),但textview看起来不像它移动。虽然在新的缩小视图中,现在有一个白色区域,textview 应该移动到。

// Called when the UIKeyboardDidShowNotification is sent.

- (void)keyboardWasShown:(NSNotification *)aNotification {

NSLog(@"keyboard was shown");
NSDictionary* info = [aNotification userInfo];
CGSize kbSize = [[info objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].size;
//CGRect keyboardFrame = [[info objectForKey:UIKeyboardFrameEndUserInfoKey]CGRectValue];
NSLog(@"kb size is:%f",kbSize.height);

//UIEdgeInsets contentInsets = UIEdgeInsetsMake(0.0, 0.0, kbSize.height, 0.0);

CGRect newFrame = self.view.frame;
//20 status bar height, 44 is nav bar height
newFrame.size.height = 480 -20 - 44 - kbSize.height;

self.view.frame = newFrame;
self.view.layer.borderWidth = 1.0f;
self.view.layer.borderColor = [[UIColor redColor] CGColor]; 

[self.view setNeedsLayout];
[self.view setNeedsDisplay];

}

2 个答案:

答案 0 :(得分:2)

尝试使用UIScrollView。 将此控件放在scrollview中,并使用属性contentOffset向上/向下滚动。 这是非常简单的方法。

祝你好运!

答案 1 :(得分:0)

使用UIScrollView获取您的内容。

收到通知后,使用键盘高度展开滚动视图的内容大小。 然后设置内容偏移量。