如何使文本字段在键盘覆盖时向上移动

问题描述:

我有一个应用程序,其中有2个textfields和一个textview.when,当我单击第一个文本字段时,我的键盘弹出窗口并且他们没有问题,但是当我输入第二个textfield我的键盘弹出窗口并覆盖textfield。我希望当我点击第二个文本字段时,textfield应该向上移动一点,这样我可以输入并且我有一个textview但是我已经编写了textview的代码,以便当我输入文本视图它会自动移动。问题是与textfield.Can任何人都可以帮助我解决这个问题。谢谢如何使文本字段在键盘覆盖时向上移动

查看下面的链接 - 该解决方案由Micheal Tyson编写。它解决了UITableView和UIScrollView,可以很容易地进行更改,并且像一个插入式组件一样工作。我正在使用它,它运作良好。

A drop-in universal solution for moving text fields out of the way of the keyboard

+0

嗨delirus,我已经通过你在答案中提到的链接,但我有一个问题,键盘保持完整的整个应用程序。即使文本字段已结束,它不会辞职 – Rani 2011-05-06 06:01:15

创建两个方法,如下所示,第一个是使视图稍微向上,第二个是将观点带回原来的位置

第一种方法:

[UIView beginAnimations:nil context:NULL]; 
[UIView setAnimationDuration:.3]; 

self.view.transform = CGAffineTransformTranslate(self.view.transform, 0, -175); 
[UIView commitAnimations]; 

方法二:考虑使用UITableViewController

[UIView beginAnimations:nil context:NULL]; 
[UIView setAnimationDuration:.3]; 

self.view.transform = CGAffineTransformTranslate(self.view.transform, 0, 175); 
[UIView commitAnimations]; 

[self.destext resignFirstResponder]; 

呼吁textfieldEditingDidbegin这些方法和DidEndonExit

。否则执行UITextFieldDelegate并将您的UIView移动到- (void)textFieldDidBeginEditing:(UITextField *)textField方法中的所需位置。

+1

+1推荐的UITableViewController - 我不能强调不够是多么方便实现形式时。 – Till 2011-05-05 10:30:03

+0

这不是最好的答案,因为如果用户使用蓝牙键盘,可以调用textFieldDidBeginEditing,并且不需要任何滚动。 YOu应该观看键盘通知事件来检测键盘的存在。 – mahboudz 2012-12-14 11:05:30

将视图添加到UIScrollView。然后使用UITextFieldDelegate方法设置当触摸textField时的contentOffset。当用户输入完文字后重置contentOffset

我花了一段时间来含住一个很明显的一个,你可能已经尝试过了,但一个是从横向更改为纵向。

我已经创建了UIView的简单子类,它包含UITextView和一个发送按钮,当键盘显示时向上移动,并在键盘隐藏时向下移动。除此之外,UITextView根据文本的大小调整大小。

在这里看一看:

https://github.com/kerrygrover/KBTextView

enter image description here