当以编程方式将UITextField设置为FirstResponder时,会在文本编辑上造成一些奇怪的操作

我有一个自定义键盘的UITextField,基本上就像一个计算器。 我想我的键盘默认显示,所以我用[self.topInputTextField becomeFirstResponder];viewDidLoad ,我认为这是非常常见的用法。 但是,它会在我的文本框中导致一些非常奇怪的操作。

当我将我的文本字段设置为viewDidLoad中的第一个响应者时,每次完成编辑之后,文本都会跳转,而当我单击另一个文本字段并再次单击第一个文本字段时,第一个文本字段中的文本有时会发生移位下来,消失,但有时不。 我感觉这很难描述,所以我为它logging了一个GIF图像。

在这里输入图像说明

原因,我相信[self.topInputTextField becomeFirstResponder]; 造成这个问题,就是当我评论那行代码的时候,一切都恢复正常了。 这里是我注释掉该行后的GIF:

在这里输入图像说明

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

编辑:另外一件事是我试图改变字体和字体大小,他们都有类似的奇怪的行为。

*编辑2:**这里是我如何设置我的文本字段,我没有做任何幻想

在这里输入图像说明

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

viewDidLoad调用这个还为时过早,用户界面还没有计算出你的屏幕大小,甚至你的设备在哪个方向。它还不是真正的UI …在willAppearAnimated中尝试:..