使用UIScrollView时,将UITextField移动到键盘上方

时间:2016-06-07 15:34:16

标签: ios swift uiscrollview keyboard

我有一个UIScrollView,其中包含一个包含多个UIView的{​​{1}}容器。

我想要执行以下操作:如果我选择一个字段并且它位于键盘下方,请将提升文本字段提高到键盘上方20个点。如果它在键盘上方则不做任何事情。

真正的问题是,当键盘处于活动状态时,最后一个字段根本不可见,因为我到达UITextField的末尾(在我的情况下,它是836点高)。

我认为我可以将整个视图提升到键盘的高度,但这并不意味着当前字段将完全位于键盘上方20个点。

有什么想法吗?

编辑:这不是一个重复的问题。我已经有一个UIView,我希望活动文本字段完全位于键盘上方20个点如果在完成编辑前一个字段后按键盘上的“下一步”键盘下方的字段。

3 个答案:

答案 0 :(得分:1)

查看KeyboardWillShow和KeyboardWillHide通知。

实现后,可以从通知对象参数中检索键盘的高度。

从那里,你的UIView框架可以调整所需的数量,以便UITextFields在键盘上方20点。

希望这有帮助。

答案 1 :(得分:0)

尝试使用TPKeyboardAvoiding库。你必须设置scrollView的类。它将处理所有事情。

希望它会帮助你。

答案 2 :(得分:0)

viewWillAppear中添加 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:nil]; 的观察者,就像这样 -

keyboardWillShow:

然后在- (void) keyboardWillShow:(UIView *)aView { [scrollview scrollRectToVisible:textView.frame animated:YES]; } 方法中,按以下方式将滚动视图滚动到UITextField的框架 -

Controller

如果您的textField已经在屏幕上,则不会执行任何操作。如果textField位于键盘下方,则会自动将scrollView移动到textView的框架。