以编程方式将UITextField设置为FirstResponder时,会对文本编辑产生一些奇怪的操作

时间:2014-02-20 06:23:40

标签: ios uitextfield becomefirstresponder

我有一个带自定义键盘的UITextField,基本上就像一个计算器。我希望我的键盘默认显示,所以我在[self.topInputTextField becomeFirstResponder];中使用viewDidLoad,我认为这是非常常见的用法。但是,它会在我的文本域中引起一些非常奇怪的行为。

当我将textfield设置为viewDidLoad中的第一个响应者时,每次完成编辑后,文本将跳转,当我单击另一个文本字段并再次单击第一个文本字段时,第一个文本中的文本田野有时会向下移动并消失,但有时不会。我觉得这很难描述,所以我为它录制了一个GIF图像。

enter image description here

我确信[self.topInputTextField becomeFirstResponder];导致问题的原因是,当我对该行代码进行评论时,一切都恢复正常。这是我在评论该行后的GIF:

enter image description here

这对我来说很奇怪,在2 GIF文件之间,我所做的唯一改变是注释掉那行代码。我在SE上找不到任何解决方案。任何想法都将非常感激。

修改     还有一件事是我试图改变字体和字体大小,它们都有类似的奇怪行为。

*编辑2:**     这是我如何设置我的文本域,我没有做任何花哨的事情

enter image description here

2 个答案:

答案 0 :(得分:5)

尝试在viewDidAppear中调用键盘,此方法在viewDidLoad之后调用。我认为这是因为你只应该在用户看似已经加载的视图上调用键盘,所以如果你在视图实际出现之前调用它会导致意外行为。

答案 1 :(得分:4)

viewDidLoad对于调用它来说为时尚早,UI还没有确定您的屏幕大小,甚至设备所在的方向。它还不是真正的用户界面...在willAppearAnimated中尝试:。