如何防止键盘覆盖UIViewController上的子视图?

时间:2015-06-09 17:29:10

标签: ios objective-c uitableview uiviewcontroller

在我的UITableViewControllers中,当屏幕上显示键盘时,我通常会通过NSLayoutConstraint IBOutlet(例如@property (weak, nonatomic) IBOutlet NSLayoutConstraint *constraintTableViewBottomToSuperViewBottom)为tableView的底部设置动画。然后,如果键盘在屏幕上动画,我将键盘的大小添加到约束中,如果键盘消失,我从约束中删除键盘大小。

像魅力一样。

现在,我需要使用UIViewController而不是UITableViewController执行相同的操作。

我有点困惑。当我使用UITableViewController执行此操作时,它很简单。键盘显示后,我的tableView的高度变小了,但我仍然可以通过向上和向下滚动tableView来轻松查看所有数据。

如果我使用UIViewController的主UIView执行此操作,当屏幕上显示键盘时,我会缩短UIViewController的主视图的高度,但这会缩小/倾斜此处的所有子视图主视图,压缩它们。你怎么解决这个问题?

1 个答案:

答案 0 :(得分:0)

如果您需要允许用户在键盘可见时拖动视图,那么您需要在ScrollView中进行所有布局,这将像UITableView方法一样工作。

如果您只需要向上移动并显示键盘背后的内容,并且不需要允许用户拖动视图,那么您可以获取viewcontroller的主视图(self.view)并重新分配它的框架。

e.g。 self.view.frame = CGRectMake(self.view.frame.origin.x, self.view.frame.origin.y - keyboardHeight, self.view.frame.size.width, self.view.frame.size.height);